Warum bekomme ich beim Versuch, auf ein Hash-Element zuzugreifen, die Fehlermeldung "Kann ich keinen String als HASH ref verwenden"?

7

Wie behebe ich diesen Fehler?

%Vor%

Fehler: Die Zeichenfolge ("1249998666") kann nicht als HASH-Referenz verwendet werden, während "strict refs" in der Zeile /.../BMW.pm der Zeile 222 verwendet wird.

    
Kys 12.08.2009, 17:55
quelle

3 Antworten

11

Das Modul Data::Dumper ist in solchen Situationen äußerst nützlich - um Ihnen zu helfen, herauszufinden, warum eine komplexe Datenstruktur Ihren Erwartungen nicht entspricht. Zum Beispiel:

%Vor%     
FMc 12.08.2009 18:14
quelle
10

Offensichtlich ist einer der Werte in %{ $args{car_models} } keine Hash-Referenz. Das heißt, die Datenstruktur enthält nicht, was Sie denken, dass es tut. So können Sie entweder die Datenstruktur korrigieren oder Ihren Code so ändern, dass er der Datenstruktur entspricht. Da Sie die Datenstruktur nicht angegeben haben, kann ich dazu nichts sagen.

Sie können ref verwenden, um zu sehen, ob $_ vor dem Versuch einen Verweis auf einen Hash enthält Zugriff auf ein Mitglied.

%Vor%

Basierend auf Ihrem Kommentar und meinen ESP-Befugnissen gehe ich davon aus, dass diese Werte Zeitstempel sind. Also, ich schätze, Sie versuchen, das Jahr aus einem Zeitstempelwert (Anzahl der Sekunden aus einer Epoche) zu finden. In diesem Fall möchten Sie wahrscheinlich localtime oder gmtime :

%Vor% %Vor%

Ohne weitere, konkrete Informationen darüber, was Ihre Datenstruktur enthalten soll, ist dies meine beste Schätzung.

    
Sinan Ünür 12.08.2009 18:00
quelle
0

Hi, wenn Sie eine Hash-Ref-Variable haben (wie $ hash_ref), dann wird der Code

sein %Vor%

Danke, Manoj Shekhawat

    
Manoj Shekhawat 19.03.2012 07:03
quelle

Tags und Links