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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
InRdvData("bidule", (8, 13, 2015),(15, 13, 2015),"Bureau");
c'est comme si tu avais écris :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");