5

ローカル コピーを作成せずにハッシュの配列への参照を反復処理したいのですが、「厳密な参照」エラーが発生している間、ARRAY 参照として文字列 ("1") を使用できませんというエラーが発生し続けます。なんで?どうすれば修正できますか?

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、単一の引数を渡すため、長さが 1 であるため、"1".

あなたは書くことができます

my ( $garage ) = @_;

多分

my $garage = shift;

代わりは。

の割り当ての後、投稿にもセミコロンがありません@garage

詳細については、 perldoc perlsubを参照してください。

于 2010-07-15T22:15:36.050 に答える