Quelle est la différence entre faire use My::Module
et require My::Module
?En Perl, quelle est la différence entre l'utilisation et le besoin de charger un module?
Répondre
La fonction use
:
use ModuleName;
est équivalent au code suivant à l'aide de la fonction require
:
BEGIN {
require ModuleName;
ModuleName->import;
}
Le bloc BEGIN
provoque ce code à exécuter dès que l'analyseur voit. Le require
charge le module ou die
en cours d'essai. Et puis la fonction import
du module est appelée. La fonction import
peut faire toutes sortes de choses, mais il est courant de charger des fonctions dans l'espace de noms use
d (souvent avec le module Exporter
).
Il est important de noter que les importations ne seront pas appelés dans ce cas:
use ModuleName();
Dans ce cas, il est équivalent à
BEGIN {
require ModuleName;
}
La page de manuel dit que c'est * exactement * équivalent :) – Inshallah
@Inshalla J'aime laisser une petite marge de manœuvre pour ma mémoire défectueuse. –
De perldoc -q
"difference between require and use":
use Module
est commerequire Module
, sauf queuse
4.1: charge le module au moment de la compilation, pas l'exécution.
4.2: importe les symboles et la sémantique de ce paquet par rapport à celui en cours.
use
s'exécute au moment de la compilation et require
s'exécute au moment de l'exécution.
N'oubliez pas l'appel de 'import'. –
C'est la réponse qu'ils recherchent sur les tests Perl et les entretiens d'embauche. Vous devez mémoriser cela! – Hawk
Perl est fourni avec une grande documentation. Tout le monde aurait avantage à lire l'ensemble de la documentation au moins une fois tous les quelques mois.
Sinon
require
exige qu'un fichier de bibliothèque être inclus si elle n'a pas déjà été inclus. Le fichier est inclus via le mécanisme DO-FILE , qui est essentiellement juste une variété d'eval avec la mise en garde que les variables lexicales dans le script appelant seront invisible au code inclus. A sémantique similaire à la procédure suivante:
... etc.De même,
C:\>
perldoc -f use
Importe une sémantique dans le package courant à partir du module nommé, généralement par aliasing certains sous-programme ou les noms de variables dans votre package . Il est exactement équivalent à
BEGIN { require Module; Module->import(LIST); }
sauf que le module doit être un mot seul.
... etc
Il y a aussi la perlfaq entry même si je pense qu'il est moins instructif que ce qui précède.
En plus de la merveilleuse commande perldoc, vous pouvez accéder à toute la documentation via http://perldoc.perl.org –
Ah. Vos tags kbd rendent plus difficile de dire ce qu'est un lien (ainsi que le rendu pas très joliment). – ysth
- 1. Quelle est la différence entre un espace de noms et un module en F #?
- 2. Quelle est la différence entre package, module et classe dans Perl orienté objet?
- 3. Quelle est la différence entre AppDomain.CurrentDomain.BaseDirectory et Application.ExecutablePath en pratique?
- 4. Quelle est la différence entre dict() et {}?
- 5. quelle est la différence entre:.! et: r !?
- 6. Quelle est la différence entre = et: =
- 7. Flex: Quelle est la différence entre un "composant" MXML et un "module" MXML?
- 8. Quelle est la différence entre un assistant et un partiel?
- 9. Quelle est la différence entre include et extend dans Ruby?
- 10. Quelle est la différence entre un nanokernel et un exokernel?
- 11. Quelle est la différence entre un midlet et un corelet?
- 12. Quelle est la différence entre un itérateur et un générateur?
- 13. Quelle est la différence entre new Some :: Class et Some :: Class-> new() dans Perl?
- 14. Quelle est la différence entre le format OMF et COFF?
- 15. Quelle est la différence entre parent et base dans Perl 5?
- 16. Quelle est la différence entre 'int?' et 'int' en C#?
- 17. Quelle est la différence entre « et" en JavaScript?
- 18. Quelle est la différence entre Perl (ou, et) et (||, &&) opérateurs de court-circuit?
- 19. Quelle est la différence entre nohup et un démon?
- 20. Quelle est la différence entre rediriger et transférer dans Symfony?
- 21. Quelle est la différence entre read et readline en C#?
- 22. Quelle est la différence entre IContainer et IUnityContainer de Prism?
- 23. Quelle est la différence entre this.click() et $ (this) .click()?
- 24. Quelle est la différence entre session.Merge et session.SaveOrUpdate?
- 25. Quelle est la différence entre __reduce__ et __reduce_ex__?
- 26. Quelle est la différence entre Server.MapPath et HostingEnvironment.MapPath?
- 27. Quelle est la différence entre cmpStr et cmpStrHard dans FreezeThaw de Perl?
- 28. jQuery: Quelle est la différence entre '$ (this)' et 'this'?
- 29. Quelle est la différence entre le flux de fichiers en C et iostream en C++?
- 30. Quelle est la différence entre EM Dash # 151; et # 8212 ;?
@Ether: mais c'est le m. L'un d'entre eux, de toute façon. – ysth
Cela peut être facile à comprendre par vous-même, mais c'est certainement une très bonne question Perl que les débutants sont enclins à poser. Je ne vois pas pourquoi ça ne devrait pas être sur stackoverflow. Où est le mal? – innaM