Quelle est la différence entre le parent et la base de Perl 5?
Il semble y avoir une nouvelle pragma nommé parent qui n'a à peu près la même chose que base. Ce n' parent faire de bons de souscription d'un nouveau (non-core) module? Je suis en manque de quelque chose?
base essayé d'en faire un trop grand nombre de choses – gérer automatiquement le chargement des modules, mais aussi permettant d'établir l'héritage de classes déjà chargé (éventuellement à partir d'un fichier dont le nom n'était pas basé sur le nom du module). De faire en sorte de le faire fonctionner, il y a quelques hackery qui a causé des résultats surprenants dans certains cas. Plutôt que de rompre la compatibilité descendante, une nouvelle, remplacement pragma parent a été introduit avec la propre sémantique.
parent sera un module de base de 5.10.1.
Mise à jour: oublié que base poignées fields (si vous utilisez le fields pragma), qui parent ne pas le faire.
Aussi, comparer perl -nous'say besoin de base de perl -nous'say besoin de parent
J'arrive à revenir sur cette page pour rechercher la réponse, encore et encore. Mnémonique: base et parent est apparu dans l'ordre alphabétique.
à la différence des mortels et autodie 🙂
en perl 5.26 ces deux imprimer 1, ce qui était l'ancienne sorties il y a 10 ans?
charge le module avec le même nom que le nom du package à l'aide de require
accepte une option qui permet de ne pas mourir si un module avec le même nom que le package n'existe pas
Presque. Le norequire option permet de ne pas faire l'exigent (de sorte que la classe doit être déjà chargé). Cela signifie qu'il n'a pas à intercepter les erreurs et de décider si elles doivent être supprimées ou non.
base
essayé d'en faire un trop grand nombre de choses – gérer automatiquement le chargement des modules, mais aussi permettant d'établir l'héritage de classes déjà chargé (éventuellement à partir d'un fichier dont le nom n'était pas basé sur le nom du module). De faire en sorte de le faire fonctionner, il y a quelques hackery qui a causé des résultats surprenants dans certains cas. Plutôt que de rompre la compatibilité descendante, une nouvelle, remplacement pragmaparent
a été introduit avec la propre sémantique.parent
sera un module de base de 5.10.1.Mise à jour: oublié que
base
poignéesfields
(si vous utilisez lefields
pragma), quiparent
ne pas le faire.base
etparent
est apparu dans l'ordre alphabétique.Armé avec le bit supplémentaire de l'information à partir de ysth, j'ai été en mesure de voir les différences dans les docs:
La
base
pragma fait les choses suivantes:@ISA
require
(sauf si elle détecte que le paquet a déjà été chargé)$VERSION
n'existe pas dans le paquet nommé, les sets de base à"-1, set by base.pm"
champs
du paquet nommé, si elles existentLa
parent
pragma fait les choses suivantes:@ISA
require