Attention, tu n'utilises pas les tableaux comme il faudrait :
Tout d'abord, lors du passage de paramètre, toutes les variables passés sont mises bout à bout dans une grande table @_.
Ainsi, dans cette ligne :
InRdvData("bidule", (8, 13, 2015),(15, 13, 2015),"Bureau");
c'est comme si tu avais écris :
InRdvData("bidule", 8, 13, 2015, 15, 13, 2015 ,"Bureau");
Et rien ne permet de distinguer la première date de la deuxième.
Ensuite, dans la récupération des paramètres, c'est pareil, le fait d'écrire :
my ($mytxt, @dd, @df, $lieu) = @_;
Va remplir @dd avec toutes les valeurs de @_ qui suivent "bidule", et @df et $lieu seront vides, car lors de l'affectation, l'opérateur = ne sait pas où partager la table, il rempli donc par défaut le premier tableau qu'il trouve à gauche du égal, et plus les paramètres suivants.
Pour traiter correctement ce genre de passage de paramètre, il faut utiliser des références à des tableaux (des scalaires qui pointent sur un tableau).
Exemple :
1 2 3 4 5 6 7 8
| sub InRdvData {
my ($mytxt, $dd, $df, $lieu) = @_;
# Insert here the implementation
print ("mon text= $mytxt\t toto= $df->[0]\t titi= $dd->[1]\n");
my $d=$dd->[0]."-".$dd->[1]."-".$dd->[2]; # s'écrit aussi $d = join "-", @$dd;
my $f=$df->[0]."-".$df->[1]."-".$df->[2]; # s'écrit aussi $f = join "-", @$df;
}
InRdvData("bidule", [8, 13, 2015], [15, 13, 2015],"Bureau"); |
Partager