出力時の改行コードを設定してみる
月曜日は、このサイトを見てくれてる方が増えるのでテンションが上がりますね。
金土は下がり続けるので、土日はテンションは低めだったりします。
ところで、print
で出力した時に、
改行もしたいって場合はどうしてますか???
思いつく限りだと、これだけある。
use v5.10; use strict; use warnings; print 'foo' . "\n"; print 'foo', "\n"; print "foo\n"; say 'foo'; { local $\ = "\n"; print 'foo'; }
実行すると、こんな感じ。
$ perl aaa.pl
foo
foo
foo
foo
foo
1つ目は、先に.
で連結する分、ちょっと無駄があるかもですね。
2つ目は、print LIST
に沿った感じで、良く使います。
3つ目は、ダブルクォーテーションですべて括るパターンで、これも良く使います。
4つ目は、一番使いますね。
5つ目は、4つ目と同じだそうです・・・って、えっ!?
say LIST
は単に { local $\ = "\n"; print LIST }
の省略形です。
だそうです。最近、知りました。
ところで、$\
って・・・?
これは、「出力レコードセパレータ」と呼ぶようです。
詳しくは、こちらをどうぞ。
そして、これがまた便利でして、
普段は、undef
が入っているそうです。
use v5.10; use strict; use warnings; say '$\ is ', ( defined $\ ) ? 'defined' : 'not defined';
$ perl bbb.pl
$\ is not defined
例えば、改行コードをCRで出力したい場合はこんな感じ。
use v5.10; use strict; use warnings; local $\ = "\r"; print for 0..5;
すると、Mac OS Xのターミナルだと何も表示されません。
$ perl ccc.pl
けど、こんな感じで実行して、
$ perl ccc.pl > result.txt
“result.txt”をテキストエディタで確認すると、
改行コードがCRでちゃんと出力されてます。
何に使うのって?それは、こちらご覧ください。
おしまい。
Leave a Comment