3.8 スカラーコンテキストとリストコンテキストの続き

前回書きかけのまま
仕事が忙しくなってしまいました。
仕切りなおし。


最も重要だというこの章の趣旨は
「式は、置かれている場所によって、意味が変わることがある」
という点です。
これはCなどにはない*1、私にとっては新しい概念でした。


私のよく知っている言語たちは、
ファイルの冒頭で型を宣言して
それから逸脱するとコンパイラがエラーで返します。
細かいことを言えば色々ありますが、
私の中ではこういうイメージでした。


でもPerlでは、このコンテキスト(context)という概念で
この手間を省略しているようです。


考えてみれば、人間が通常の会話の中で、
「今から話すハシとは、橋ではなくて箸だよ」
なんて宣言しなくても、文脈でわかります。
要するにそういうことかな、と。


なんとも柔らかい言語ですね。Perlって。




以下、自分の中で反芻するために、
テキスト中の例文を書き写します。

@people = qw( fred barney betty );
@sorted = sort @people; #リストコンテキスト:fred, barney, betty
$number = 5 + @people; #スカラーコンテキスト:5+3で8になる

$fred = something; #スカラーコンテキスト
@pebbles = something; #リストコンテキスト
($wilma, $betty) = something; #リストコンテキスト
($dino) = something; #リストコンテキスト

#以下、somethingにスカラーコンテキストを提供。
$fred = something;
$fred[3] = something;
123 + something
something + 654
if (something) {...}
while (something) {...}
$fred[something] = something;

#以下、somethingにリストコンテキストを提供。
@fred = something;
($fred, $barney) = something;
($fred) = something;
push @fred, something;
foreach $fred (something) {...}
sort something
reverse something
print something

*1:私の知っている範囲で...