Perl-非法十六进制数字警告错误
我在这行代码中收到警告:
$mismatch = ($_ =~ s/[^x0]//g);
在 xxxxxx.pl 第 61 行忽略了非法的十六进制数字 ']'。正则表达式对我来说是有效的,请问是什么导致了这个错误?这是它不喜欢的正确方括号。
谢谢!
回答
根据perldoc.perl.org,
类似地,
xnn,其中nn是十六进制数字,匹配本机序数为 的字符nn。同样,不完全使用两位数字是灾难的秘诀,但您可以使用x{...}指定任意数量的十六进制数字。
所以,你需要使用
s/[^x00]//g
或者,s/[^x{0}]//g。