Windows 上的 Perl 将我的换行符转换为 CRLF


print FILEHANDLE;

-当从Windows框运行时 - 总是将尾随n转换为rn- 产生DOS格式的文件。 DOS 和 UNIX 文件之间的区别在于,在 UNIX 中,每行的最后一个字符是 ,而在 Windows 中是rn。 我尝试更改行终止字符$ = "n";但打印命令仍然转换为DOS格式。 这只发生在Windows盒子上。

如果你不喜欢 Perl 决定输出数据的方式,你可以改变它。在三参数open中,它看起来像这样:

open my $fh, '>:raw', $filename;

或者,如果您已经有文件句柄,则可以使用binmode

binmode $fh, ':raw';
binmode $fh;          # :raw is the default

输出取决于各种IO"层",每个"层"在输出之前都会将脏手指伸入您的数据中。Perlio 文档有列表。有一个:crlf层可以打开 unix 行尾,默认情况下你可能会得到它。请注意,更改输出记录分隔符是在print级别发生的,但还有更深的层仍然可以完成其工作。

最新更新