From: Masaaki Sakano Date: 2001-09-18T18:24:39+09:00 Subject: [ruby-list:31523] AWK & Ruby (BEGIN{}/END{}) 坂野 正明と申します。 Ruby と Awk とに絡んで、便乗(?)質問させて下さい。 > In message "[ruby-list:31501] Re: はじめまして AWK から Ruby" > on 01/09/17, WATANABE Hirofumi 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 オプションがほぼ必ず 指定されているもの、と理解していますが、実は、他に有用な使い方が あったりします? さかのまさあき