construire un hash pour chaque ligne

construire un hash pour chaque ligne - Perl - Programmation

Marsh Posté le 08-05-2014 à 10:00:38    

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  
 

Reply

Marsh Posté le 08-05-2014 à 10:00:38   

Reply

Marsh Posté le 08-05-2014 à 11:28:30    

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é!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed