Perl:替换二进制内容

时间:2018-03-15 19:39:17

标签: regex perl binaryfiles

我需要用Perl中的其他内容(文本或二进制)替换二进制内容。

如果内容是文字内容,我可以使用s ///替换内容。

 my $txt = "tomturbo";
 $txt =~ s/t/T/g;      # TomTurbo

但如果内容是二进制文件,则无效。

有没有一种简单的方法可以解决这个问题?

谢谢!

1 个答案:

答案 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代码点的字符串),但您可以使用正则表达式引擎的任何功能。