我想迭代一个哈希数组的引用,而不必制作本地副本,但我一直得到不能使用字符串(“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; }
解决方法
这条线
my $garage = @_;
将@_的长度分配给车库.在调用testDriveCars方法时,您传递一个arg,因此长度为1,因此您的错误消息为“1”.
你可以写
my ( $garage ) = @_;
也许
my $garage = shift;
代替.
在发布@garage之后,帖子中也有一个缺少的分号.
有关详细信息,请参阅perldoc perlsub.