syk*_*ker 5 arrays perl hash reference perl-data-structures
我想迭代一个哈希数组的引用,而不必制作本地副本,但我一直得到不能使用字符串("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;
}
Run Code Online (Sandbox Code Playgroud)
这条线
my $garage = @_;
Run Code Online (Sandbox Code Playgroud)
指定@_车库的长度.在对testDriveCars方法的调用中,您传递一个arg,因此长度为1,因此您的错误消息"1".
你可以写
my ( $garage ) = @_;
Run Code Online (Sandbox Code Playgroud)
也许
my $garage = shift;
Run Code Online (Sandbox Code Playgroud)
代替.
在发布之后,帖子中也缺少一个分号@garage.
有关详细信息,请参阅perldoc perlsub.