[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