[PERL] Passer un tableau en paramètre d'une fonction

Passer un tableau en paramètre d'une fonction [PERL] - Perl - Programmation

Marsh Posté le 09-12-2008 à 11:02:52    

Hello, ma question est toute bête, je souhaiterais mettre un tableau en paramètre d'une fonction sous Perl.
 
exemple : myfunc ($val1, $val2, @tableau)
 
Pour l'appeler ensuite en assignant les variables :
 
my $val1 = $_[0]; my $val2 = $_[1]; my @tableau = @_, mais ça ne fonctionne pas.
 
J'ai tenté sur le net, je suis tombé sur Perlsub et ses fonctions. Ainsi, mypop (Déclarée : sub mypop (\@) qu'on appelle apparemment : mypop @array)) permettrait de faire ce genre de manipulation.
 
Malheureusement, je n'arrive pas à m'en servir comme il faut.
 
Quand je cherche à récupérer le tableau passé en argument dans ma fonction, en faisant my @tableau = mypop @_, mon tableau semble vide ... que faire :??:


Message édité par Thordax le 09-12-2008 à 11:03:21

---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 09-12-2008 à 11:02:52   

Reply

Marsh Posté le 09-12-2008 à 11:33:11    

J'utilise rarement perlsub.  
Par contre, je fais couramment ce que tu cherches:
my ($val1, $val2, @tableau) = @_;
ou bien
my $val1 = shift; my $val2 = shift; my @tableau = @_;
 
A+,


Message édité par gilou le 09-12-2008 à 11:34:41

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-12-2008 à 14:11:45    

utilises une référence pour passer ton tableau :

Code :
  1. myfunc ($val1, $val2, \@tableau)


ensuite dans ton code, caste ta référence :

Code :
  1. my $arg = shift;
  2. my @tableau = @{$arg};

Reply

Marsh Posté le 09-12-2008 à 14:48:47    

couak a écrit :

utilises une référence pour passer ton tableau

Euh, ca dépend, selon que l'on peut modifier son tableau initial ou non, ça. Parce que si la fonction fait des modifs...
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-12-2008 à 23:12:11    

Merci à vous deux :hello: j'avais finalement trouvé comme un grand en faisant comme ta première réponse Gilou.


---------------
Atari 520 ST 256 Ko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed