gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

「要求されている戻り値の型」の判断

ちょいとCGI.pmのparamメソッドを調べていて見つけたのですが。


関数 wantarray
実行中の関数の「戻り値」として配列値を要求していれば true を、スカラー(単項目 通常の$で始まる変数)を要求していればfalseを返す。


…すごいなぁ。「戻り値」の形の判断をするってあたりが。
例題。

sub foo
{
if (wantarray) {
# 配列復帰としての処理
} else {
# スカラー復帰としての処理
}
}

なんて関数を用意すると、
@data = foo();
なら配列復帰処理のifブロックが反応して、
$data = foo();
ってするとスカラー復帰処理のifブロックが反応するです。


………便利っちゃぁ便利だけど。多言語との移植性その他考えると、乱用は考えものだなぁ。
まぁ一応チェック入れておくですって感じで。