Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Perl : passage de tableau en paramètre
Envoyé par: phlux

Salut,

Jusqu'à présent je pensais avoir compris le passage de tableau en paramètre mais je suis tombé sur un os.

En fait, la même fonction, fonctionne ou non, selon qu'elle est dans le même module que la fonction appelante.

Exemple qui marche :

programme : exec.pl
 #!/usr/bin/perl

use strict;

my @data_file;
push(@data_file,'item1');
push(@data_file,'item2');
push(@data_file,'item3');

test(\@data_file);

sub test {

  my ($data_file)=@_;
  
  foreach my $liste (@data_file) {
	print "$liste \n" ;
  }
  
  return 0;
}

Exemple qui en marche pas ;o(

programme : exec.pl
 #!/usr/bin/perl

use strict;

require ("module.pl");

my @data_file;
push(@data_file,'item1');
push(@data_file,'item2');
push(@data_file,'item3');

&module::test(\@data_file);

}

programme : module.pl
 #!/usr/bin/perl

use strict;
package module;
 
sub test() {
  my ($data_file) = @_;
 
  foreach my $liste (@data_file) {
	print "$liste \n" ;
  }
  
  return 0;
}

1;

Là, j'ai droit à un super : Global symbol "@tab" requires explicit package name at module.pl

Donc je pense que je passe mal le tableau mais je ne vois pas, donc si quelqu'un avait une idée.

Merci.


Poste le Tuesday 12 September 2006 22:33:05
Répondre     Citer    
Re: Perl : passage de tableau en paramètre
Envoyé par: duff

C'est tout à fait normal, pour Perl $tab et @tab (de même que %tab) sont des variables différentes et totalement indépendantes les unes des autres.

Quand tu écris
&module::test(\@data_file);
tu passes non pas le tableau @data_file, mais sa référence (si tu connais le C, c'est comme un pointeur sur le tableau)

Dans ta fonction test, la variabel $data_file contient donc la référence de ton tableau
essaye de mettre la ligne suivante après $data_file:
print ref($data_file);
Pour récupérer ton tableau, tu peux écrire:
my @data_file = @$data_file;
# ou
my @toto = @$data_file;
ce qui te permet de déréférencer $data_file et récupérer ton tableau dans @data_file ou dans @toto.

Voilà

Poste le Thursday 14 September 2006 18:44:55
Répondre     Citer    
Re: Perl : passage de tableau en paramètre
Envoyé par: phlux

Salut Duff,

Merci pour ton aide.

A+

Poste le Thursday 14 September 2006 21:39:27
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Perl : passage de tableau en paramètre
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons