Warum erhalte ich "Can' T use string als HASH-ref" - Fehler, wenn ich versuche, Zugriff auf eine hash-element?
Wie behebe ich diesen Fehler?
foreach (values %{$args{car_models}}) {
push(@not_sorted_models, UnixDate($_->{'year'},"%o"));
}
Fehler:
Kann nicht string verwenden ("1249998666") als HASH ref while "strict refs" in use at /.../BMW.pm line 222.
- Die Daten-Struktur, die Sie gepostet wird, ist nicht konsistent mit den obigen code und die Fehlermeldung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
Data::Dumper
Modul ist äußerst nützlich in solchen Situationen-um Ihnen zu helfen herauszufinden, warum eine komplexe Datenstruktur ist nicht die Erfüllung Ihrer Erwartungen. Zum Beispiel:Klar, die Werte in
%{ $args{car_models} }
ist nicht eine hash-Referenz. Das ist in der Datenstruktur nicht enthalten ist, was Sie denken, es tut. So können Sie entweder reparieren die Struktur der Daten oder ändern Sie Ihren code entsprechend der Datenstruktur. Da haben Sie nicht die Daten-Struktur, ich kann nicht kommentieren, die.Könnten Sie
ref
um zu sehen, ob$_
enthält eine Referenz auf einen hash, bevor Sie versuchen, den Zugang eines Mitglieds.Basierend auf Ihren Kommentar und meine ESP-Kräfte, ich gehe davon aus, dass diese Werte sind timestamps. Also, ich vermute, Sie versuchen, finden Sie das Jahr aus einem timestamp-Wert (Anzahl der Sekunden, aus einer Epoche). In diesem Fall, werden Sie wahrscheinlich wollen,
localtime
odergmtime
:Ohne weitere, konkrete Informationen über das, was Ihr an der Struktur der Daten enthalten soll, das ist meine beste Vermutung.
values %{ $args{car_models} }
sollen nicht zu hash-Referenzen? Wenn das der Fall ist, warum sind Sie dereferenzieren Sie, als ob Sie sein sollen? Zeigen Sie Ihre Daten-Struktur Ansonsten ist dies ein Fall, der die blinden führen die blinden.Hallo, wenn Sie eine hash-ref-Variablen (wie $hash_ref), dann wird der code
Dank,
Manoj Shekhawat