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!を呼ぶって書いてあるので仕様っぽい。正直つらい…