Nehmen wir an, es gibt zwei Module, die sich gegenseitig nutzen:
%Vor%Ich denke, dass es systematisch falsch ist, einen Code wie den obigen zu schreiben, weil die beiden Module sich gegenseitig den Code endlos kopieren, aber ich kann den folgenden Code erfolgreich ausführen, was mich sehr überrascht. Kann jemand von euch mir das alles erklären?
%Vor%weil die beiden Module gegenseitig den Code für sich selbst kopieren
Nein, das werden sie nicht, wie Sie mit dem Code gezeigt haben, der Sie bei der Arbeit überrascht hat. Perl speichert einen Datensatz in %INC
, von dem Module mit use
oder require
geladen wurden, und versucht nicht, sie erneut zu laden, wenn sie use
d oder require
d erneut erhalten.
Es gibt (mindestens) drei verschiedene Arten, etwas zu laden: use
, require
und do
.
use
ist im Grunde ein pimped require
und perldoc Status für require
: erfordern Anforderungen, dass eine Bibliotheksdatei enthalten sein sollte, wenn sie nicht bereits enthalten ist. Also kein Problem dort.
do
ist eine andere Geschichte. Es führt die Datei aus und ist mehr oder weniger wie eval
oder C #include
. Gegenseitige Einbeziehung über do
sollte tödlich sein.
Tags und Links perl