Perl の while に与えられた例外的な構文であり、行入力演算子が while の括弧の中にある場合は特別に $_ に行が代入され、EOF が来たら終了するのである!なお、<> は良い感じに標準入力とかコマンドライン引数に与えられたファイルから一行読む特殊な行入力演算子(ダイヤモンド演算子)なのだ!
なお、この演算子の意味はスカラーコンテキストかリストコンテキストかによって異なることに注意!
Perl の while に与えられた例外的な構文であり、行入力演算子が while の括弧の中にある場合は特別に $_ に行が代入され、EOF が来たら終了するのである!なお、<> は良い感じに標準入力とかコマンドライン引数に与えられたファイルから一行読む特殊な行入力演算子(ダイヤモンド演算子)なのだ!
なお、この演算子の意味はスカラーコンテキストかリストコンテキストかによって異なることに注意!
ここから派生してなんで $_ に代入すんの?$_ ってなに?ってなるので Perl の闇は深い。print とか say とかで引数を何も書かなかった場合には $_ を出力される。$_ に対して正規表現(これにもデフォルトで $_ を変更するような構文がある)で書き換えまくった結果を print するというようなイディオムが存在し、そういうのを主な目的で Perl を使う人にとっては最高の略記法なのである。
なお、会社とかで協調してプログラミングをする文脈におかれたプログラマが Perl のこういうマジックに苦しめられたであろうことは容易に想像できる(幸いなことに私はそういう目に遭うことがなかった)。
senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.
All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.