:encoding(cp932):crlfではなくて、:crlf:encoding(cp932)
スポンサードリンク
初心に帰って、Windows用のCP932エンコーディング(シフトJIS)、改行コードがCR+LFのテキストを書き出すコードを書いているのですけれども、今さら気づいたので。
use utf8; my $text = "ほげ\nふが"; open my $fh, '>', 'text.txt'; binmode $fh => ':encoding(cp932):crlf'; print $fh $text; close $fh; exit; __END__
だと、実行するときに
Wide character in print at test.pl line 5.
が出るが、
use utf8; my $text = "ほげ\nふが"; open my $fh, '>', 'text.txt'; binmode $fh => ':crlf:encoding(cp932)'; print $fh $text; close $fh; exit; __END__
だと、実行するときに警告が出ない。
理由は知らない。
なお、こういうときは、
use utf8; use open OUT => ':crlf:encoding(cp932)'; my $text = "ほげ\nふが"; open my $fh, '>', 'text.txt'; print $fh $text; close $fh; exit; __END__
と、openプラグマ(2行目)で指定しておくと簡単です。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3546
コメントする