मैं स्थानीय प्रतियां बनाने के बिना हैश की एक सरणी के संदर्भ के माध्यम से पुनरावृत्ति करना चाहता हूं, लेकिन मुझे लगता है कि स्ट्रिंग ("1") का उपयोग ARRAY ref के रूप में नहीं कर सकता है जबकि "सख्त" 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;
}
यह सामान्य त्रुटि संदर्भ को समझने से नहीं आती है। एक स्केलर के लिए असाइनमेंट एक स्केलर संदर्भ उत्पन्न करता है, इस प्रकार '_ _' को स्केलर के रूप में मूल्यांकन किया जाता है (जो लंबाई उत्पन्न करता है)। – daotoad