2019年2月14日木曜日

開発環境

使い捨て用だから同じことをするコードをもっと短く書いてみた。

いずれも標準出力はファイルへリダイレクトせずそのまま表示。一つ目のコードの「chcp 65001」は、文字番号を変更して日本語環境のコマンドプロンプトでUTF-8をちゃんと表示するため。(日本語の出力がなくASCIIコードの範囲なら変更しなくても問題なくちゃんと出力される。)

コード

while (<>) {
    print;
}

入出力結果(cmd(コマンドプロンプト)、Terminal)

C:\Users\...>chcp 65001
Active code page: 65001

C:\Users\...>type input.txt
foo
日本語
bar

C:\Users\...>perl sample.py input.txt
foo
日本語
bar

C:\Users\...>

コメントにあるように、読み込んだ行をごにょごにょ何かしてから出力したい場合は、$_特殊変数を利用すればいい。

コード

while (<>) {
    # 行末の改行を削除
    chomp $_;
    print "Hello, $_!\n";
}

入出力結果(cmd(コマンドプロンプト)、Terminal)

C:\Users\...>perl sample.pl input.txt
Hello, foo!
Hello, 日本語!
Hello, bar!

C:\Users\...>

さらにコマンドライン引数を指定してワンライナーでコードを書いたファイルも不要に。

入出力結果(cmd(コマンドプロンプト)、Terminal)

C:\Users\...>perl -e 'while(<>){print;}' input.txt
foo
日本語
bar

C:\Users\...>perl -p -w -e '' input.txt 
foo
日本語
bar

C:\Users\...>

ということで、普段は🐍Pythonを使うことが多いけど、🐪Perlのショートカットの豊富さや、ワンライナーはいいなぁと思ったり。

0 コメント:

コメントを投稿