mysub
次の 2 つの呼び出しが事実上同じになるように動作するサブルーチンを作成しようとしています。
mysub(["values", "in", "a", "list"]);
mysub("Passing", "scalar", "values");
これを実現するための適切な構文は何ですか?
@_
単一の配列参照が含まれているかどうかを確認します。
sub mysub {
if ( @_ == 1 && ref( $_[0] ) eq 'ARRAY' ) {
# Single array ref
} else {
# A list
}
}
このif
句は、引数が 1 つだけ渡されたこと、および引数が を使用した配列参照であることを確認しref
ます。ケースが同じであることを確認するには:
sub mysub {
if ( @_ == 1 && ref( $_[0] ) eq 'ARRAY' ) {
@_ = @{ $_[0] };
}
# Rest of the code
}