10
votes

Pourquoi est-ce que je reçois "Impossible d'utiliser la chaîne comme une erreur de hachage ref" lorsque j'essaie d'accéder à un élément de hachage?

Comment puis-je corriger cette erreur? XXX

ERREUR: Impossible d'utiliser une chaîne ("12499986666") en tant que hachage Réf, tandis que "Strict Refs" en utilisation à /.../bmw.pm Ligne 222.


1 commentaires

@Kys La structure de données que vous avez affichée n'est pas cohérente avec le code ci-dessus et le message d'erreur.


3 Réponses :


11
votes

Clairement, l'une des valeurs dans % {$ args {car_models}} n'est pas une référence de hachage. C'est-à-dire que la structure de données ne contient pas ce que vous pensez. Vous pouvez donc corriger la structure de données ou modifier votre code pour correspondre à la structure de données. Puisque vous n'avez pas fourni la structure de données, je ne peux pas commenter à ce sujet.

Vous pouvez utiliser ref pour voir si $ _ contient une référence à un hachage avant d'essayer d'accéder à un membre. xxx P> Basé sur votre commentaire, et mes pouvoirs ESP, je suppose que ces valeurs sont des horodatages. Donc, je devine, vous essayez de trouver l'année à partir d'une valeur d'horodatage (nombre de secondes d'une époque). Dans ce cas, vous voulez probablement localTime ou gmtime : xxx < Pré> xxx

Sans outre, des informations concrètes sur ce que votre structure de données est censée contenir, c'est ma meilleure hypothèse.


5 commentaires

Mon intention est de pousser ces chiffres dans le tableau @non_sorted_models en tant que nombres afin que je puisse appeler trier sur la matrice. Comment puis-je le convertir en un entier


Au fait, mettre ces chèques en place m'a toujours donné les mêmes erreurs.


@Kys je ne comprends pas ce que vous dites. Dis-tu valeurs% {$ args {car_models}} ne sont pas censés être des références de hachage? Si tel est le cas, pourquoi êtes-vous la déséquilibre comme si elles sont censées être? Afficher votre structure de données Sinon, il s'agit d'un cas d'aveugle en tête des aveugles.


Voici comment il ressemble à: {'Quatre-roue' => 'vrai', 'Description' => 'Lightning Fast', 'producteur' => {'Nom' => {}}, 'Année' => ' 2009-08-07T22: 31: 06Z ',};


Et oui, ils sont des horodatames que je veux convertir en numéros en numéros d'une époque. Je ne sais pas si vous lisez les trucs que j'ai posté sur l'autre lien, mais il est étrange que les erros disparaissent si j'ai d'abord mon enregistreur imprimant les valeurs d'abord.



13
votes

Le module Data :: Dumper est extrêmement utile dans de telles situations - pour vous aider à déterminer pourquoi une structure de données complexe ne répond pas à vos attentes. Par exemple: xxx


0 commentaires

1
votes

salut si vous avez une variable de hachage refaire (comme $ hash_ref), le code sera

if ( ref($hash_ref) eq 'HASH' and exists $hash_ref->{year} ) {
    push(@not_sorted_models, UnixDate($hash_ref->{year},"%o")); 
}
#instead of below:
if ( ref eq 'HASH' and exists $_->{year} ) {
    push(@not_sorted_models, UnixDate($_->{year},"%o")); 
}


0 commentaires