Windows版 Perl で挿入した改行が \r\n になってしまう
#!/bin/env perl open my $out, '>', 'test.txt'; # 改行が \n ではなく、\r\n になってしまう print $out 'Windows 版の Perl だと改行が \\r\\n になってしまう', "\n"; close $out;
binmode でファイルポインタを指定すれば解決する
標準入出力やオープンしたファイルは通常テキストモードになっています。この状態でバイナリファイルを読み書きすると、0a と 0d 0a の自動変換が働いてしまい、データが壊れてしまいます。
http://www.tohoho-web.com/perl/binary.htm
Windows でバイナリファイルを読み込む際には、binmode() を用いて、指定したファイルハンドルをバイナリモードに設定する必要があります。UNIX では binmode() を呼び出しても何の変化もありません。
というのが原因となる。
#!/bin/env perl open my $out, '>', 'test.txt'; # バイナリモードで動作するように設定 binmode($out); print $out 'binmode を使うと、改行が \\n になる', "\n"; close $out;