- ベストアンサー
Perl 戻り値の型の判定って出来ますか?
Perlは引数でのOUTを返せないと認識してます。 ※ここで間違っていたらご指摘下さい。 そのために下記のように、違った型(スカラー変数または配列)を返すように切り替えた場合に呼び側はどのように判定すれば良いのでしょうか?教えて下さい。 $result = sample(); sub sample{ $abc = "abc"; @xyz = qw(x y z); if(){ return $abc; } if(){ return @xyz; } return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1つの方法としては、 return \$abc; return \@xyz; としてリファレンスを返すことです。 そうすれば、 if(ref($result) eq 'ARRAY'){ print @$result; } else { #SCALAR print $$result; } のように判定できます。
その他の回答 (1)
- kapura
- ベストアンサー率50% (48/95)
回答No.1
呼び側で push(@result, sample()) などとするのは安易でしょうか。 @resultの要素数を見ればスカラーが返されたのか簡易判定できるのでは?
質問者
補足
さっそくの返答ありがとうございます。 しかし、1つの配列要素を返した場合とスカラーの場合との判定が出来ないような気がします。 Perlはビギナーでして普通がわからないのですが、 正常・異常の復帰値と配列データを返す場合同時に返したい場合はどうしているのでしょうか? やはりグローバル変数を使うのでしょうか?
お礼
ありがとうございました。 解決いたしました。 また何かありましたら、よろしくお願い致します。