読者です 読者をやめる 読者になる 読者になる

Rubyのlオプションがつらい

Ruby

Rubyのnまたはpオプションは標準入力からテキストを読み込み、行ごとに-eで指定したRubyスクリプトに渡して処理を行う。

$ echo "123" | ruby -pe ""
123

さらにlオプションを付けると行末の改行コードを削除してから処理を行うのだが、chomp!じゃなくてchop!が呼ばれる。このためファイル末尾に改行が無いと最後の文字が削られてしまう…。つらい

$ echo -n "123" | ruby -ple ""
12

perlはchompを呼ぶので問題なし

$ echo -n "123" | perl -ple "" 
123

Rubyのドキュメントにもchop!を呼ぶって書いてあるので仕様っぽい。正直つらい…