Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[debutant] récupération des paramètres dans une fonction

3 réponses
Avatar
Ben
Bonjour à tous,
je n'arrive pas à bien récupérer les arguments d'une fonction.

Par exemple :

my @tab1 = ( 1,2,3);
my @tab2 = ("a","b","c");
fonction_de_test(@tab1,@tab2);


sub fonction_de_test {
my @tab_arg = @_;
my @tab_1 = shift(@tab_arg);
my @tab_2 = shift(@tab_arg);
}

Ca ne sera une surprise pour personne si je dis que
@tab_1 est différent de @tab1
idem pour tab 2

Donc, ce que je voudrais, c'est savoir comment faire pour passer et
récupérer les
arguments à des fonctions, que ce soit des bêtes variable, des tableaux, des
hash..Etc
et les récupérer facilement...

Merci à tous ;o)

3 réponses

Avatar
Jean-Michel Hiver
Bonjour à tous,
je n'arrive pas à bien récupérer les arguments d'une fonction.

Par exemple :

my @tab1 = ( 1,2,3);
my @tab2 = ("a","b","c");
fonction_de_test(@tab1,@tab2);


Si tu fais ca, c'est comme si tu passais une liste (1,2,3,"a","b","c").

En effet en Perl tu peux ecrire @liste = (@sous_liste1, @sous_liste2);

Il te faut invoquer la fonction en passant la liste par reference plutot
que par valeur, i.e.

fonction_de_test (@tab1, @tab2);


sub fonction_de_test {
my @tab_arg = @_;
my @tab_1 = shift(@tab_arg);
my @tab_2 = shift(@tab_arg);
}


Ca deviendrait:

sub fonction_de_test {
my ($tab_ref_1, $tab_ref_2) = @_;
my @tab_1 = @{$tab_ref_1};
my @tab_2 = @{$tab_ref_2};
}

Avatar
Ben
Merci beaucoup ;o)


"Jean-Michel Hiver" a écrit dans le
message de news: 3fd620b0$0$19373$
Bonjour à tous,
je n'arrive pas à bien récupérer les arguments d'une fonction.

Par exemple :

my @tab1 = ( 1,2,3);
my @tab2 = ("a","b","c");
fonction_de_test(@tab1,@tab2);


Si tu fais ca, c'est comme si tu passais une liste (1,2,3,"a","b","c").

En effet en Perl tu peux ecrire @liste = (@sous_liste1, @sous_liste2);

Il te faut invoquer la fonction en passant la liste par reference plutot
que par valeur, i.e.

fonction_de_test (@tab1, @tab2);


sub fonction_de_test {
my @tab_arg = @_;
my @tab_1 = shift(@tab_arg);
my @tab_2 = shift(@tab_arg);
}


Ca deviendrait:

sub fonction_de_test {
my ($tab_ref_1, $tab_ref_2) = @_;
my @tab_1 = @{$tab_ref_1};
my @tab_2 = @{$tab_ref_2};
}




Avatar
Laurent Wacrenier
Ben écrit:
Donc, ce que je voudrais, c'est savoir comment faire pour passer et
récupérer les
arguments à des fonctions, que ce soit des bêtes variable, des tableaux, des
hash..Etc
et les récupérer facilement...


Utilise des prototypes (perldoc perlsub)

sub fonction_de_test(@@) {
my @tab_1 = @{$_[0]};
my @tab_2 = @{$_[1]};
print $tab_1[0], $tab_2[0], "n";
}

my @tab1 = ( 1,2,3);
my @tab2 = ("a","b","c");
fonction_de_test(@tab1, @tab2) ;