[Perl] Appel sous-routine

Philippe Bruhat (BooK) philippe.bruhat at free.fr
Lun 8 Fév 02:20:29 CET 2016


On Sun, Feb 07, 2016 at 11:49:58PM +0100, Patrick Dupre wrote:
> Bonjour,
> 
> Dans le programme principal, j'ai
> use Absorption_FM qw (Gaussian_FM) ;

Ceci ajoute la fonction Gaussian_FM dans ton namespace (main::).

> Gaussian_FM et correctement implementee dans Absorption_FM.pm avec
> our @EXPORT = qw (Gaussian_FM) ;
> Je l'appele par Absorption_FM::Gaussian_FM () ;
> 
> Dans le programme principal, j'ai aussi une function:
> Gaussian_FM
> que j'appele par:
> Gaussian_FM () ;

Celle-ci aussi est dans le namespace main::, d'où le warning.

> Donc il pourrait y avoir une confusion, en fait il n'y en a pas, tout
> ce passe comme espere, sauf a al compilation, j'ai un warning:
> Subroutine Gaussian_FM redefined at /home/pdupre/bin/Profile line 1815
> 
> Il doit donc y avoir quelque pas de pas tres correct!
> 
> Comment clarifier tout risque de confusion ?

Le plus simple est de ne pas exporter la fonction issue du module
Absorption_FM en le chargeant comme suit:

    use Absorption_FM (); # `perldoc -f use` pour les détails

-- 
 Philippe Bruhat (BooK)

 No matter who you may be, there is always someone who is a little worse
 because he thinks he is a little better.
                                     (Moral from Groo The Wanderer #3 (Epic))


Plus d'informations sur la liste de diffusion Perl