OVH Cloud OVH Cloud

[Passer plusieurs listes a une fonction ??]

3 réponses
Avatar
moretti
Hello,
je cherche a passer plusieurs listes a une fonction d'un module avec la
construction suivante:

## script
use Bidule;
&Bidule::struct($r_e_p,@gstart,@gend,@gbegin,@gfinish);

##module
package Bidule;

sub struct{
my ($rep,@g_start,@g_end,@g_begin,@g_finish)=@_;
.
.
.
}

Le probleme s'est que les listes que j'envoie (au nombre de 4 en plus de la
premiere variable) passent toutes dans @g_start au lieu de se repartir dans
les listes suivantes.

J'ai essaye d'appeler directement depuis le module @gstart, @gend, @gbegin
et
@gfinish mais j'ai un test avant cet appel de fonction et @gstart, ...
peuvent correspondre a differentes choses dans divers autres modules.
J'ai tente un truc comme ca :
@"$nom_module1"::gstart
mon Perl n'interprete pas $nom_module1 pour faire ce que je souhaite:
@Module1::gstart avec $nom_module1="Module1"

Comment faire ?
merci


----------
Sebastien Moretti

3 réponses

Avatar
Alain BARBET
## script
use Bidule;
&Bidule::struct($r_e_p,@gstart,@gend,@gbegin,@gfinish);

##module
package Bidule;

sub struct{
my ($rep,@g_start,@g_end,@g_begin,@g_finish)=@_;

Comment faire ?


En utilisant des references ....
&Bidule::struct($r_e_p,@gstart,@gend,@gbegin,@gfinish);


sub struct{
my ($rep,$g_start,$g_end,$g_begin,$g_finish)=@_;
foreach (@$g_start) { ... }

perldoc perlre

Avatar
moretti
## script
use Bidule;
&Bidule::struct($r_e_p,@gstart,@gend,@gbegin,@gfinish);

##module
package Bidule;

sub struct{
my ($rep,@g_start,@g_end,@g_begin,@g_finish)=@_;

Comment faire ?


En utilisant des references ....
&Bidule::struct($r_e_p,@gstart,@gend,@gbegin,@gfinish);


sub struct{
my ($rep,$g_start,$g_end,$g_begin,$g_finish)=@_;
foreach (@$g_start) { ... }

perldoc perlre


C'est nickel, merci.
j'ai un peu ramer pour trouver la taille de la liste referencee mais c'est
tout simplement $#$g_start.
Merci pour tout

----------
Sebastien Moretti


Avatar
Pierre LAZARD
moretti wrote:
Hello,
je cherche a passer plusieurs listes a une fonction d'un module avec la
construction suivante:

il faut essayer de passer les tableaux par variables au lieu de par valeur :

struct($rep,@g_start,@g_end,@g_begin,@g_finish);

sub struct {
my ($rep,$g_start,$g_end,$g_begin,$g_finish)=@_;

}
dans la fonction struct il y aura des pointeurs sur tableaux,
pour accéder aux éléments :
$g_start->[$i]

voilà,
Pierre LAZARD