坂野 正明と申します。

Ruby と Awk とに絡んで、便乗(?)質問させて下さい。

> In message "[ruby-list:31501] Re: はじめまして AWK  から Ruby"
>     on 01/09/17, WATANABE Hirofumi <eban / os.rim.or.jp> writes:
> |  ruby -lan -F: -e 'p $F' /etc/passwd
> |のほうがいいかも。

Ruby の BEGIN{}、END{} 文の変数のスコープは、BEGIN{} 内は
独立のローカルスコープ、END{} 内は周囲とスコープを共有 --- メイン
ルーチンと共通のスコープ、とマニュアルにあります。

これ、BEGIN{} だけどうして独立のスコープなのでしょう?

私が使う時の場合、END{} を使う時は、BEGIN{} を併用する(かつ、
変数を共有する)ことが多いもので、ちょっと疑問に思ったものですから…。

一例: 第一コラムの総和を求める
UNIX% printf "1\n2\n3\n" | awk '{n+=$1}END{print n}'
UNIX% printf "1\n2\n3\n" | ruby -ane 'BEGIN{$n=.0};$n+=$F[0].to_f;END{p $n}'

BEGIN{} が使われる時は、実際上、-n や -p オプションがほぼ必ず
指定されているもの、と理解していますが、実は、他に有用な使い方が
あったりします?

さかのまさあき