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

テキストの文字数をカウントするスクリプトの1.8と1.9の比較

Ruby

1.8の場合

% cat /tmp/test.txt|ruby -Ku -e 'p STDIN.read.split(//).size'
92

1.8の場合は日本語を含む場合は-Kuなどとして、
エンコーディングを指定して、
文字数をカウントする場合はsplit(//)とやって正規表現を使って
カウントするというバッドノウハウが必要

1.9の場合

% cat /tmp/test.txt|ruby19 -e 'p STDIN.read.size'          
92

1.9の場合は環境変数LANGを見て、自動的エンコーディングがセットされるので
test.txtとLANGのエンコーディングが同じ場合は省略。
readした時はこのエンコーディングがセットされる。
String#sizeではバイト数ではなく、文字数が出てくる。