给定示例代码:
foo(bar=>"test");
foo(bar=>["test"]);
sub foo {
my $args = {@_};
say ref($args->{bar});
say ref(\$args->{bar});
}
输出:
{预期为空白}
标量
数组
REF
我想测试的是检查传递的是标量还是数组的最佳方法。就像是:
given( ref($args->{bar}) ){
when "SCALAR" { }
when "ARRAY" { }
}
我可以连接这两种 ref 类型并执行 regex-when,但这是低效的。我也可以像下面这样测试它,但不确定这是否是首选:
if ( ref(\$args->{bar}) eq "SCALAR" ) { ... }
elsif ( ref( $args->{bar}) eq "ARRAY" ) { ... }
else { return; }