我想迭代一个哈希数组的引用,而不必制作本地副本,但我一直得到不能使用字符串(“1”)作为ARRAY引用,而“严格引用”错误。为什么?我如何解决它?
sub hasGoodCar {
my @garage = (
{
model => "BMW",
year => 1999
},
{
model => "Mercedes",
year => 2000
},
);
run testDriveCars( \@garage );
}
sub testDriveCars {
my $garage = @_;
foreach my $car ( @{$garage} ) { # <=========== Can't use string ("1") as an ARRAY ref while "strict refs" error
return 1 if $car->{model} eq "BMW";
}
return 0;
}
答案 0 :(得分:7)
该行
my $garage = @_;
将@_
的长度分配给车库。在调用testDriveCars
方法时,您传递一个arg,因此长度为1,因此您的错误消息为"1"
。
你可以写
my ( $garage ) = @_;
或者
my $garage = shift;
代替。
在发布@garage
之后,帖子中也有一个缺少的分号。
有关详细信息,请参阅perldoc perlsub。