Perl在Windows上将LF编写为CRLF

时间:2019-04-23 13:57:44

标签: windows perl

我在几个文件中得到了一些散乱的Windows风格的行尾,我正在尝试使用以下命令在Windows计算机上解决该问题:

perl -pi -e s/\R/\n/ example.txt

运行完此文件后,所有运行该文件的行尾均更改为CRLF,这与我的初衷相反。为什么perl会这样做,并且我可以做些什么改变以使其达到预期的效果吗?

我正在使用Strawberry Perl版本5.28。

1 个答案:

答案 0 :(得分:1)

Windows构建的Perl默认情况下会向处理添加:crlf层。这将在读取时将CRLF转换为LF,在写入时将LF转换为CRLF。 (其他一些语言也做类似的事情。)

您需要告诉Perl这不是文本文件。不幸的是,您无法使用ARGV(您正在使用的特殊手柄)来做到这一点。

perl -pe"BEGIN { binmode STDOUT }" example.txt >example.new.txt
move example.new.txt example.txt