Perl

評価コンテキスト

評価コンテキスト、すなわち、構文上何が(リスト、数値、文字列、リファレンス、あるいは何もないのかが)要求されているかの違いにより評価値が変化する。 リストが数値スカラコンテキストで評価されると配列の長さに評価される。
$a = ("a", "b");  #数値スカラコンテキスト
print $a;         # 2 を出力
($x, $y) = ("a", "b"); #リストコンテキスト
print $x;              # a を出力
意味が大きく変わる表現も存在する。
@match = ("123 a 56 x" =~ m/\d+/g); #リストコンテキスト (全てを一度にマッチ)
# @match => ("123", "56")
$match = ("123 a 56 x") =~ m/\d+/g); #スカラコンテキスト (順次マッチ)
# $match => "1"
ブロックを呼び出したコンテキストがリストコンテキストかどうかをwantarray?で判別することができる。したがって、コンテキストによって返り値を切り替えるような関数をユーザーが定義することもできる。

戻る