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