Perl中的引用:哈希数组

时间:2010-07-15 22:08:35

标签: 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;
}

1 个答案:

答案 0 :(得分:7)

该行

my $garage = @_;

@_的长度分配给车库。在调用testDriveCars方法时,您传递一个arg,因此长度为1,因此您的错误消息为"1"

你可以写

my ( $garage ) = @_;

或者

my $garage = shift;

代替。

在发布@garage之后,帖子中也有一个缺少的分号。

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