如何将0d0a转换为0a?

时间:2014-09-12 00:08:20

标签: regex perl grep

我正在编写一个perl代码dos2unix。

这是一个简单的示例代码。

$hex =~ s/0d0a/0a/g;

我发现了一个问题。

如果000d0a00,则将井转换为000a00。

问题是00d0a000。

转换不是这样的时候。

所以我改变了代码。

$hex =~ s/0d0a(?=(..)+$)/0a/g;

问题已经解决。

但是,速度太慢了。

还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

  

我正在编写一个perl代码dos2unix。

所以你想把CR LF转换成LF。

use open IO => ':raw';  # Prevent Perl from doing any implicit
binmode STDIN;          # changes to the input or output.
binmode STDOUT;         # 
while (<>) {
   s/\r\n/\n/g;
   print;
}

use open IN => ':crlf';  # Have Perl change CR LF to LF when reading,
binmode STDIN, ':crlf';  # and prevent Perl from doing any implicit
binmode STDOUT;          # changes to the output.
print while <>;