Perl Begriffe verwechseln mich und es ist nicht meine Muttersprache, also ertragen Sie mit mir. Ich werde versuchen, die richtigen Begriffe zu verwenden, aber ich werde ein Beispiel geben, nur um sicherzugehen.Warum erlaubt Perl mir nicht, ein Mitglied einer Hash-Referenz in ein Array zu dereferenzieren?
Also habe ich einen Hash-Verweis in der Variablen $ foo. Nehmen wir an, dass $ foo -> {'bar'} -> {'baz'} eine Array-Referenz ist. Das heißt, ich kann das erste Mitglied des Arrays erhalten, indem ich einem Skalar $ foo -> {'bar'} -> {'baz'} -> [0] zuweise.
, wenn ich dies tun:
foreach (@$foo->{'bar'}->{'baz'})
{
#some code that deals with $_
}
Ich erhalte die Fehlermeldung "kein Array Bezug auf script.pl Linie 41"
Aber wenn ich dies tun, funktioniert es:
$myarr = $foo->{'bar'}->{'baz'};
foreach (@$myarr)
{
#some code that deals with $_
}
Gibt es etwas, das ich nicht verstehe? Gibt es eine Möglichkeit, das erste Beispiel zum Laufen zu bringen? Ich habe versucht, den Ausdruck in Klammern mit dem @ auf der Außenseite zu wickeln, aber das hat nicht funktioniert. Vielen Dank für die Hilfe.
Der Parser muss verstehen, was Sie meinen, und die Syntax, die Sie auf Anhieb Dinge versuchen Sie zu dereferenzieren @ $ foo, die Sie nicht in Ihrem Fall. Es geht darum, wie verschiedene Token an die Dinge um sie herum binden. Wir haben eine längere Erklärung in _Intermediate Perl_. :) –