Perlについての質問箱 14箱目
■ このスレッドは過去ログ倉庫に格納されています
0723デフォルトの名無しさん
NGNG> CR にLF足すのにCR+CR+LFになるっておかしくないか?
べつにおかしくはないよん。"\n" は、perl 内部では LF("\x0A") だが、
テキストモードのファイルハンドル使って出力するとき CR LF ("\x0D\x0A") に変換される。
実際、>>720 の言うように、binmode STDOUT; print while(<>); だと
リダイレクト結果の行末は "\x0A" のみになる。(Win 環境と CygWin 環境で確認。)
ついでに言うと、入力時のときも、テキストモードであれば "\x0D\x0A" --> "\x0A" 変換が行われる。
(したがって、Win 環境でも、上に書いた『"\n" は、perl 内部では LF("\x0A")』という約束が矛盾無く保たれる。)
さらに余談だけど、このような変換は、(Win 環境での perl に限らず) テキストモードとバイナリモードを区別する環境での
かなり一般的な約束らしい。
(注: 安全性をとってs/\r|\n//g; すること自体には異論はない。)
■ このスレッドは過去ログ倉庫に格納されています