wantarray関数を使ってみる
昨日の三項演算子のスマートな書き方 - ABラボラトリのコメント欄でid:kidd-number5さんに教えて頂いた、wantarray関数を用いた三項演算子の慣用表現。
とりあえず使ってみようということで、単純なサンプルプログラムを書いてみました。
my @hoge = &hantei(<STDIN>); #以下表示部 for (@hoge) { print; } sub hantei { my @array = @_; return ( wantarray ) ? @array : $array[0]; }
標準入力からサブルーチンhanteiに引数を渡し、もし与えられた引数が単数ならばその引数を、複数あるならばその引数のリストを返し、表示させるというプログラムです。
大まかな流れはこれでOKかな。
だめぽ。
上記のサンプルコードはwantarray機能の検証を全くしていなかったので、書き直します。
#戻り値がリストコンテキストを要求する場合 my @hoge = &hantei(); for (@hoge) { print"$_\n"; } #戻り値がスカラーコンテキストを要求する場合 my $fuga = &hantei(); print "$fuga\n"; sub hantei { return ( wantarray ) ? ('array1', 'array2', 'array3') : 'scalar'; }
これで大丈夫なはず…!
でも、どこか間違っているかもしれないね…!