与えられたコード例:
foo(bar=>"test");
foo(bar=>["test"]);
sub foo {
my $args = {@_};
say ref($args->{bar});
say ref(\$args->{bar});
}
出力:
{空白が必要}
SCALAR
ARRAY
REF
私がテストしたいのは、渡されたものがスカラーか配列かを確認する最良の方法です。何かのようなもの:
given( ref($args->{bar}) ){
when "SCALAR" { }
when "ARRAY" { }
}
2 つの ref 型を連結して regex-when を実行することもできますが、それは非効率的です。次のようにテストすることもできますが、それが好ましいかどうかはわかりません。
if ( ref(\$args->{bar}) eq "SCALAR" ) { ... }
elsif ( ref( $args->{bar}) eq "ARRAY" ) { ... }
else { return; }