Tôi muốn lặp qua tham chiếu đến một mảng băm mà không cần phải tạo bản sao cục bộ, nhưng tôi tiếp tục không thể sử dụng chuỗi ("1") làm ARRAY ref trong khi "strict refs "lỗi. Tại sao? Làm thế nào để tôi sửa chữa nó?Tài liệu tham khảo trong Perl: Array of Hashes
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;
}
Lỗi phổ biến này đến từ việc không hiểu ngữ cảnh. Việc gán cho một vô hướng tạo ra một ngữ cảnh vô hướng, do đó '@ _' được đánh giá là một vô hướng (cho phép chiều dài). – daotoad