我需要用Perl中的其他内容(文本或二进制)替换二进制内容。
如果内容是文字内容,我可以使用s ///替换内容。
my $txt = "tomturbo";
$txt =~ s/t/T/g; # TomTurbo
但如果内容是二进制文件,则无效。
有没有一种简单的方法可以解决这个问题?
谢谢!
答案 0 :(得分:5)
Perl的正则表达式引擎将使用任意字符串。
s/t/T/g
与
没什么不同s/\x{74}/\x{54}/g
意味着它会将字符值从74 16 更改为54 16 。正则表达式引擎不关心值74 16 是否意味着t
或其他。
在二进制数据中,字符A 16 不表示行的结尾,因此您需要使用s
标志,避免m
标志,并避免使用$
。
此外,你会发现i
标志和内置字符类(例如\d
,\p{Letter}
等)无用,除非你匹配解码文本的字符串( Unicode代码点的字符串),但您可以使用正则表达式引擎的任何功能。