BEGIN

ワンライナーがちょっとマイブームなので、今更ながらiオプションとか知って便利さに感動したりしている。
rubyコマンドラインで wc -l 相当のことをやろうとして

ruby -ne 'BEGIN{i=0}; i+=1; END{puts i}'

と書いたらエラーになった。リファレンスを読むと、BEGINブロックはスコープを作るらしい。なので、グローバル変数にして

ruby -ne 'BEGIN{$i=0}; $i+=1; END{puts $i}'

でOK。

$iってRubyっぽくないなあとちょっと残念。ワンライナーグローバル変数嫌ってもしょうがないけど。
スコープの件はどういう事情でああなったんだろうか。