[Perl] Définir une fonction qui porte le même nom dans un module, que celle dans un autre module

Philippe Bruhat (BooK) book at cpan.org
Lun 25 Juil 12:28:51 CEST 2016


On Fri, Jul 22, 2016 at 01:49:51PM +0200, Laurent Rosenfeld wrote:
> Si tu passes une liste vide à use, alors aucune fonction n'est importée. De
> coup tu peux y accéder uniquement avec le nom complet Encode::encode.
> 

Plus exactement, la fonction import() du module en question n'est pas
appellée.

`perldoc -f use` a plus de détails sur le fonctionnement de use, mais
pour simplifier :

    use Module LIST;

est exactement équivalent à :

    BEGIN { require Module; Module->import( LIST ); }


Et :

    use Module ();

est exactement équivalent à :

    BEGIN { require Module }


En général, la fonction import est fournie par Exporter, si le module en
question est défini comme une sous-classe d'Exporter.

Mais rien n'empêche d'écrire sa propre fonction import, qui utilise la
liste fournie en paramètre d'une façon complètement différente...

-- 
 Philippe Bruhat (BooK)

 Everyone acts their age... mental, if not physical.
                                    (Moral from Groo The Wanderer #92 (Epic))


Plus d'informations sur la liste de diffusion Perl