アプリ版:「スタンプのみでお礼する」機能のリリースについて

&test( [ X ] , [ Y ]);
X:配列またはスカラー
Y:スカラー

のような形でサブルーチンに渡し、Xが配列であってもスカラーであっても新しい配列にpushしたいのですが、どうしてよいのか分かりません。

具体的には
$a = 100;
@b = qw/1 2 3 4 5/;
$c = 500;
のとき、
&test($a, $c);なら @array = qw/100/; $scalar = 500;
&test(@b, $c);なら @array = qw/1 2 3 4 5/; $scalar = 500;
のようにしたいのです。

なお、&test($a, @b, $c);のように引数を三つにして送る方法は仲間に却下されてしまいました。
なるべく引数は二つの方向でお願いいたします。

A 回答 (1件)

一般論なら X をリファレンスにするんでしょうね.


この場合だけならサブルーチン中で @_ を pop すればいいんですが.
sub test {
$scalar = pop;
@array = @_;
}
で動いたりして.
    • good
    • 0
この回答へのお礼

レスが遅くなりましたがおっしゃるやり方で動作確認いたしました。
リファレンスか型グロブか、とずっと悩んでいましたがなるほど後ろからスカラーを抜いてくれば良かっただけなんですね。
切羽詰まっていたので非常に助かりました。
本当にありがとうございました。

お礼日時:2007/12/26 22:58

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