我正在编写一个perl代码dos2unix。
这是一个简单的示例代码。
$hex =~ s/0d0a/0a/g;
我发现了一个问题。
如果000d0a00,则将井转换为000a00。
问题是00d0a000。
转换不是这样的时候。
所以我改变了代码。
$hex =~ s/0d0a(?=(..)+$)/0a/g;
问题已经解决。
但是,速度太慢了。
还有其他方法可以解决这个问题吗?
答案 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 <>;