首页 > 解决方案 > Perl - 非法十六进制数字警告错误

问题描述

我在这行代码上收到警告:

$mismatch = ($_ =~ s/[^\x0]//g);

在 xxxxxx.pl 第 61 行忽略了非法的十六进制数字 ']'。正则表达式对我来说似乎是有效的,请问是什么导致了这个错误?这是它不喜欢的右方括号。

谢谢!

标签: regexmacosperlwarnings

解决方案


根据perldoc.perl.org

类似地,\xnn其中nn是十六进制数字,匹配原生序数为 的字符nn。同样,不完全使用两位数字是灾难的秘诀,但您可以使用\x{...}指定任意数量的十六进制数字。

所以,你需要使用

s/[^\x00]//g

或者,s/[^\x{0}]//g


推荐阅读