[Perl] Utiliser un tableau d'une subroutine

Utiliser un tableau d'une subroutine [Perl] - Perl - Programmation

Marsh Posté le 10-06-2003 à 11:50:25    

bonjour
voilà mon petit problème.
en résumé, je remplis un tableau @table dans une subroutine.
en voulais afficher les éléments de ce tableau dans mon prog principal, il ne m'affiche que le dernier.
j'ai essayé de mettre un return @table à la fin de ma subroutine, mais rien à faire.
doit-on comme d'autres langages déclarer ce tableau en global? je n'ai rien trouvé dans mes différents livres là-dessus.
si qqun pouvait m'éclairer car je patauge.
merci d'avance


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 10-06-2003 à 11:50:25   

Reply

Marsh Posté le 10-06-2003 à 22:08:02    

pourtant ca doit marcher:
 

Code :
  1. my @tab = genere_tableau();
  2. print join("\n", @tab);
  3. sub genere_tableau {
  4.     my @table = (10,50,60,80,90);
  5.     return @table;
  6. }


 
ou par reference (plus efficace au niveau memoire):

Code :
  1. my $tab_ref = genere_tableau();
  2. print join("\n", @{$tab_ref});
  3. sub genere_tableau {
  4.     my @table = (10,50,60,80,90);
  5.     return \@table;
  6. }

Reply

Marsh Posté le 11-06-2003 à 06:59:25    

je me suis penchée sur le problème hier, et en fait c'était un peu plus compliqué que ca.
j'utilise la fonction find, de cette facon (dans le main):
find(\&tab, $path1);
dans la fonction tab, je mets des valeurs dans le dit tableau, mais en le retournant ca ne fonctionnera pas.
J'ai donc déclaré et utilisé le dit tableau en global, meme si ce n'est peut-etre pas la solution la plus propre  [:spamafote]  
merci quand meme pour ton message  :jap:


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 11-06-2003 à 08:24:09    

c'est le find de File::Find?
 
en premier argument tu dois effectivement passer une ref à une fonction qui recupere le nom du fichier. Et c'est ce nom que tu veux ranger dans un tabkleau pour le recuperer apres c'est ca?
Effectivement dans ce cas tu peuxfaire un truc du genre:
 

Code :
  1. my @tableau;
  2. find(\&tab, $path1);
  3. print "Fichier:\n", join("\n", @tableau);
  4. sub tab {
  5.        push @tableau, $_; # ou $File::Find::name pour avoir le nom complet
  6. }


 
mais tu peux aussi faire ca:
 

Code :
  1. my @tableau;
  2. find(sub{&tab(\@tableau)}, $path1);
  3. print "Fichier:\n", join("\n", @tableau);
  4. sub tab {
  5.        my $tab_ref = shift;
  6.        push @{$tab_ref} , $_;
  7. }


Message édité par pospos le 11-06-2003 à 08:25:56
Reply

Sujets relatifs:

Leave a Replay

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