Go to the first, previous, next, last section, table of contents.


コンテキスト

Perl における演算や値の解釈は、その演算や値の置かれたコンテキストからの 要求に依存する場合があります。このコンテキストというものには大きく2つあ り、スカラコンテキストとリストコンテキストと呼ばれます。リストが要求され るコンテキストではリスト値を返し、そうでなければスカラ値を返すような演算 も存在します。(そのような演算については、ドキュメントでその演算に触れる ときに付記しています。)言い方を変えると、Perl では、ある種の演算が1つの 値を返して欲しいか、複数の値を返して欲しいかによって多重定義されていると いうことです。("fish" や "sheep" といった、単複同形の英単語と似ているか もしれません。) 逆に、演算子は自分の引数が、スカラコンテキストとリストコ ンテキストのどちらで解釈されるかを決めてしまいます。たとえば、

int( <STDIN> )

と書くと、int 演算子は、自分の引数である <STDIN> 演算子がスカラコンテキ ストで評価されることを期待するため、<STDIN> は、STDIN から1行を読み出し int 演算子に渡します。int 演算子は、その行から整数値を取り出して返すこと になります。これに比べて、もし、

sort( <STDIN> )

と書いたなら、sort 演算子は、<STDIN> 演算子がリストコンテキストで評価さ れるようにするため、<STDIN> は STDIN から読める限り最後の行まで読み出し、 その行のリストを sort のルーティンに返します。sort ルーティンは受け取っ た行のリストをソートして、ソートした結果のリストが値となります。

代入演算は少し特殊です。代入では、右引数のコンテキストを決めるために左引 数が使われます。スカラへの代入では、右側をスカラコンテキストで評価します が、配列や配列のスライスに対する代入では、右側をリストコンテキストで評価 することになります。リストへの代入も右側をリストコンテキストで評価するこ とになります。

ユーザが定義するサブルーティンは、自分がスカラコンテキストで呼ばれたか、 リストコンテキストで呼ばれたかを意識することができますが、多くのサブルー ティンでは意識する必要もないでしょう。スカラ値は自動的にリストの要素にな ることができるからです。See section 組み込み関数,の wantarray の項を参照してく ださい。


Go to the first, previous, next, last section, table of contents.

検索式: