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