Chiaramente, uno dei valori in %{ $args{car_models} }
non è un riferimento hash. Cioè, la struttura dei dati non contiene ciò che pensi che faccia. Pertanto, è possibile correggere la struttura dei dati o modificare il codice in modo che corrisponda alla struttura dei dati. Dato che non hai fornito la struttura dati, non posso commentare in merito.
È possibile utilizzare ref
per verificare se $_
contiene un riferimento a un hash prima di provare ad accedere a un membro.
if (ref eq 'HASH' and exists $_->{year}) {
push(@not_sorted_models, UnixDate($_->{year},"%o"));
}
Sulla base del tuo commento, e dei miei poteri ESP, sto assumendo che quei valori siano timestamp. Quindi, sto indovinando, stai cercando di trovare l'anno da un valore di timestamp (numero di secondi da un'epoca). In tal caso, probabilmente si desidera localtime
o gmtime
:
my $year = 1900 + (localtime)[5];
C:\Temp> perl -e "print 1900 + (localtime(1249998666))[5]"
2009
Senza ulteriori, informazioni concrete su ciò che si suppone la struttura di dati per contenere, questa è la mia ipotesi migliore.
fonte
2009-08-12 18:00:56
@Kys La struttura dei dati che hai postato non coerente con il codice sopra e il messaggio di errore. –