Référence trouvé où même la taille de la liste prévue

Je suis en train d'écrire ce code en perl, où j'ai créer une clé unique, puis de lui affecter une valeur.

  sub populate {
      my $file = shift;
      my %HoH = shift;

      open(INFILE,$file);
      .
      .
      .  
      $final_name = $prepend.$five;
      $HoH{$final_name} = $seven;
 }

Maintenant, je suis de passage dans les deux paramètres à un sous-programme dont l'id comme

&populate(\%abc,$file_1);
&populate(\%xyz,$file_2);

Pourquoi il me donne une erreur comme ceci:

Reference found where even-sized list expected
  • Quelle que soit la documentation que vous êtes en train de lire qui vous dit d'utiliser les deux arguments de la forme "ouverte" est obsolète. Utilisez les trois-argument forme: open my $INFILE, '<', $file. (Et vérifier les erreurs.)
  • mais $fichier contient l'adresse de l'emplacement du fichier.
  • Je ne suis pas sûr de ce que vous voulez dire par là. $file doit contenir le nom du fichier. Les appels open(INFILE, $file) et open my $INFILE, '<', $file sont à peu près équivalent, mais celle-ci est mieux. perldoc -f open pour plus d'informations. (Et il vous manque un '$' dans votre code source; my file = shift; devrait être my $file = shift;.)
  • oh que c'était une faute de frappe.Dans le code que j'avais tapé que. De sorte qu'il imprime les choses pour le 1er fichier, mais pas pour le 2ème fichier.
  • Il n'y a pas de print déclaration dans votre code. Comment peut-il imprimer quoi que ce soit?
  • C'est pourquoi vous devez copier-coller votre code, de ne pas retaper.
  • je vais garder cela à l'esprit.Et concernant l'impression , ce que je voulais dire, c'est stocker les valeurs dans la table de hachage HoH.

InformationsquelleAutor kunal | 2011-08-08