wyraźnie jeden wartości w %{ $args{car_models} }
nie jest odwołaniem hash. Oznacza to, że struktura danych nie zawiera tego, co myślisz, że robi. Możesz więc albo naprawić strukturę danych, albo zmienić kod, aby pasował do struktury danych. Ponieważ nie dostarczyłeś struktury danych, nie mogę tego komentować.
Możesz użyć numeru ref
, aby sprawdzić, czy $_
zawiera odwołanie do skrótu przed próbą uzyskania dostępu do elementu.
if (ref eq 'HASH' and exists $_->{year}) {
push(@not_sorted_models, UnixDate($_->{year},"%o"));
}
Na podstawie twojego komentarza i moich uprawnień ESP zakładam, że te wartości są znacznikami czasowymi. Tak więc zgaduję, próbujesz znaleźć rok z wartości znacznika czasu (liczba sekund z epoki). W tym przypadku, prawdopodobnie chcesz localtime
lub gmtime
:
my $year = 1900 + (localtime)[5];
C:\Temp> perl -e "print 1900 + (localtime(1249998666))[5]"
2009
Bez dalszych, konkretnych informacji o tym, co struktura danych ma zawierać, to mój najlepszy przypuszczenie.
@Kys Struktura danych jest pan pisał niezgodny z powyższym kodem i komunikatem o błędzie. –