2012-12-06 4 views
0

Je comprends donc que la classe spéciale UNIVERSAL doit être considérée comme la classe de base à partir de laquelle tous les autres objets sont créés. Donc, si une méthode spécifique n'est pas trouvée après que Perl a traversé la hiérarchie d'héritage, il regardera dans la classe UNIVERSAL pour voir si la méthode peut être trouvée là. Toutefois, lorsque vous créez une distribution, aucun package UNIVERSAL.pm n'est créé. En outre, les méthodes de DOES 'et « peut » UNIVERSAL déjà exister sans UNIVERSAL.pm ... En tant que tel, je ne sais pas si je devrais écrire des méthodes UNIVERSAL dans des emballages aléatoires comme ceci:Où stocker les méthodes UNIVERSAL en Perl

sub UNIVERSAL::nicemethod{ 
    launch_teh_missles(); 
} 

Ou devrais-je créer un paquet UNIVERSAL séparé et un fichier .pm? Qu'est-ce qui est considéré comme la meilleure pratique?

+0

i like this méthode :) – gaussblurinc

Répondre

1

Vous pouvez ajouter de nouvelles méthodes pour UNIVERSAL la même manière que tout autre emballage:

package 
    UNIVERSAL; # Line break to fool CPAN indexer 

sub nice_method { 
    ... 
} 
+1

Vous ne voulez pas CPAN de croire que votre distro a un module nommé UNIVERSAL, donc vous voulez mettre un saut de ligne dans la directive 'package'. – ikegami

+0

cela signifie-t-il également qu'il n'est pas sage de créer un fichier UNIVERSAL.pm pour les méthodes? – CODEBLACK

Questions connexes