Claramente, una de los valores en %{ $args{car_models} }
no es una referencia hash. Es decir, la estructura de datos no contiene lo que crees que es. Por lo tanto, puede corregir la estructura de datos o cambiar su código para que coincida con la estructura de datos. Como no ha proporcionado la estructura de datos, no puedo comentar sobre eso.
Puede usar ref
para ver si $_
contiene una referencia a un hash antes de intentar acceder a un miembro.
if (ref eq 'HASH' and exists $_->{year}) {
push(@not_sorted_models, UnixDate($_->{year},"%o"));
}
Según su comentario, y mis poderes ESP, estoy asumiendo que esos valores son marcas de tiempo. Entonces, supongo que está tratando de encontrar el año a partir de un valor de marca de tiempo (número de segundos de una época). En ese caso, es probable que desee localtime
o gmtime
:
my $year = 1900 + (localtime)[5];
C:\Temp> perl -e "print 1900 + (localtime(1249998666))[5]"
2009
Sin más, información concreta sobre lo que se supone que la estructura de datos que contiene, este es mi mejor conjetura.
@Kys La estructura de datos informados es no es coherente con el código anterior y el mensaje de error. –