Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1149 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  construire un hash pour chaque ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

construire un hash pour chaque ligne

n°2227573
djewel
Posté le 08-05-2014 à 10:00:38  profilanswer
 

Bonjour,
 
Je bute depuis 2 jours sur un petit problème et j'arrive pas à trouver la solution.
j'ai un programme qui lit la donnée entrée entrée au clavier et je récupère en sortie les argument de la fonction suivante:  
 
 
sub cpt {
 my ($numero, @liste1, @liste2) = @_;
  my %cpts;
  foreach ($numero){
  $numero = keys(%cpts);
  (@liste1,@liste2)= values(%cpts);
  }
   return %cpts;  
}
print "cpt($numero,@liste1,@liste2)\n";  
 
cette dernière ne me permet de  récupérer que les paramètre de la ligne en cours; alors que je voudrais avoir toutes les lignes précédentes dans un hash.
c'est surement bête mais ça me bloque pour la suite  :heink: .
aidez moi s'il vous plait  
 

mood
Publicité
Posté le 08-05-2014 à 10:00:38  profilanswer
 

n°2227577
gilou
Modérateur
Modzilla
Posté le 08-05-2014 à 11:28:30  profilanswer
 

Je comprends rien à rien à ce que vous faites.
Si vous faites
my ($numero, @liste1, @liste2) = @_;  
vous déclarez des variables locales à la procédure
quand vous faites
print "cpt($numero,@liste1,@liste2)\n";  
les variables sont en dehors de la procédure, donc ça marchera pas.
Autres trucs qui sont manifestement pas bons:
1) my ($numero, @liste1, @liste2) = @_;  
on ne peut avoir qu'une seule liste (en dernier) pour récupérer les valeurs de @_
Ici, obligatoirement, @liste2 sera vide, puisque toutes les valeurs de @_ sauf la première auront été passées à @liste1
2) print "cpt($numero,@liste1,@liste2)\n";  
En plus de la remarque du début, comme cpt retourne un array, ce n'est surement pas print qu'il faut employer pour lister son contenu
3) $numero = keys(%cpts); et (@liste1,@liste2)= values(%cpts);  
je ne sais pas ce que vous voulez faire, mais c'est surement pas ça  
$numero = keys(%cpts); va coller l'adresse de la liste keys(%cpts); (qui vu votre code ne peut être que vide) dans la variable $numero (ce qui entre autres est susceptible de mettre le souk dans la boucle foreach)
4) foreach ($numero)
Si $numero est un scalaire, on ne voit pas trop a quoi sert de faire un foreach dessus.
 
Bref, il n'y a pratiquement rien de correct dans vos lignes.
 
Expliquez moi clairement par l'exemple ce que vous avez en entrée comme paramètres et ce que vous voulez obtenir en sortie.
 
A+,


Message édité par gilou le 08-05-2014 à 11:30:35

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  construire un hash pour chaque ligne

 

Sujets relatifs
VBA excel Suppression ligne sous conditionPréserver un retour à la ligne dans un textarea en utf-8
Executer un script si nouvelle ligne dans une table MySQL[FORTRAN] Gestion sauts de ligne Windows/Linux dans fichier txt (1/2o)
Copier données en ligne par colonneCréer macro pour ajout de ligne en cas de doublons
[Inculte inside] Aligner 2 objets sur une même ligne.[résolu] découper un fichier selon contenu de la ligne
espace entre ligne de texte et haut du cadreDécalage du dernier div de la première ligne en float left
Plus de sujets relatifs à : construire un hash pour chaque ligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR