ちょいとCGI.pmのparamメソッドを調べていて見つけたのですが。
関数 wantarray
実行中の関数の「戻り値」として配列値を要求していれば true を、スカラー(単項目 通常の$で始まる変数)を要求していればfalseを返す。
…すごいなぁ。「戻り値」の形の判断をするってあたりが。
例題。
sub foo
{
if (wantarray) {
# 配列復帰としての処理
} else {
# スカラー復帰としての処理
}
}
なんて関数を用意すると、
@data = foo();
なら配列復帰処理のifブロックが反応して、
$data = foo();
ってするとスカラー復帰処理のifブロックが反応するです。
………便利っちゃぁ便利だけど。多言語との移植性その他考えると、乱用は考えものだなぁ。
まぁ一応チェック入れておくですって感じで。