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 :
c'est comme si tu avais écris :Code:InRdvData("bidule", (8, 13, 2015),(15, 13, 2015),"Bureau");
Et rien ne permet de distinguer la première date de la deuxième.Code:InRdvData("bidule", 8, 13, 2015, 15, 13, 2015 ,"Bureau");
Ensuite, dans la récupération des paramètres, c'est pareil, le fait d'écrire :
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.Code:my ($mytxt, @dd, @df, $lieu) = @_;
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 :
Code:
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");