プロが教える店舗&オフィスのセキュリティ対策術

Perlは引数でのOUTを返せないと認識してます。
※ここで間違っていたらご指摘下さい。
そのために下記のように、違った型(スカラー変数または配列)を返すように切り替えた場合に呼び側はどのように判定すれば良いのでしょうか?教えて下さい。

$result = sample();

sub sample{

$abc = "abc";
@xyz = qw(x y z);

if(){
return $abc;
}

if(){
return @xyz;
}
return 0;
}

A 回答 (2件)

1つの方法としては、


return \$abc;
return \@xyz;
としてリファレンスを返すことです。
そうすれば、
if(ref($result) eq 'ARRAY'){
print @$result;
} else { #SCALAR
print $$result;
}
のように判定できます。
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決いたしました。

また何かありましたら、よろしくお願い致します。

お礼日時:2005/10/26 20:21

呼び側で push(@result, sample()) などとするのは安易でしょうか。


@resultの要素数を見ればスカラーが返されたのか簡易判定できるのでは?

この回答への補足

さっそくの返答ありがとうございます。

しかし、1つの配列要素を返した場合とスカラーの場合との判定が出来ないような気がします。

Perlはビギナーでして普通がわからないのですが、
正常・異常の復帰値と配列データを返す場合同時に返したい場合はどうしているのでしょうか?
やはりグローバル変数を使うのでしょうか?

補足日時:2005/10/26 19:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!