5

我想遍历对哈希数组的引用,而不必制作本地副本,但我不断收到 Can't use string ("1") as an ARRAY ref while "strict refs" 错误。为什么?我如何解决它?

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;
}
4

1 回答 1

7

线

my $garage = @_;

将长度分配@_给车库。在对testDriveCars方法的调用中,您传递了一个 arg,因此长度为 1,因此您的错误消息是关于"1".

你可以写

my ( $garage ) = @_;

也许

my $garage = shift;

反而。

帖子中也缺少一个分号 - 在分配@garage.

有关详细信息,请参阅perldoc perlsub

于 2010-07-15T22:15:36.050 回答