Il semble y avoir une nouvelle pragma nommé parent
qui n'a à peu près la même chose que base
. Qu'est - parent
faire de bons de souscription d'un nouveau (non-core) module? Je suis en manque de quelque chose?
Réponses
Trop de publicités?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: vous avez oublié que la base de poignées de champs (si vous utilisez les champs pragma), le parent qui n'a pas faire.
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:
L' base
pragma fait les choses suivantes:
- ajoute le paquet nommé à l'
@ISA
- charge le module avec le même nom que le nom du package à l'aide de
require
(sauf si elle détecte que le paquet a déjà été chargé) - ne pas échouer si un module avec le même nom que le package n'existe pas
- meurt si il n'y a pas de symboles dans le paquet nommé
- si
$VERSION
n'existe pas dans le paquet nommé, base définit"-1, set by base.pm"
- initialise l'
fields
du paquet nommé, si elles existent - n'appelle pas la fonction d'importation du package nommé
L' parent
pragma fait les choses suivantes:
- ajoute le paquet nommé à l'
@ISA
- 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