2010-10-03 6 views
6

Kann jemand die Verwendungsempfehlungen zu den 4-Perl-Importen genau erklären: do, import, use und require?Wie verwende ich Perls importieren, verwenden, erfordern und tun?

Ich bin auf der Suche nach praktischen Empfehlungen und berücksichtigen mögliche Probleme, die im Zusammenhang mit mod_perl oder etwas ähnliches auftreten können.

Wir alle lieben einfache Beispiele, gute!

Bis jetzt war die beste Ressource, die ich fand, http://soniahamilton.wordpress.com/2009/05/09/perl-use-require-import-and-do/, aber das verpasste, die Implikationen von mod_perl zu berücksichtigen.

+3

Wie ist * Quick Notizen für mich; nicht als verbindlich angesehen werden "die beste Ressource", die Sie gefunden haben? –

+1

Wir haben ein ganzes Kapitel darüber in _Intermediate Perl_. :) –

+0

http://stackoverflow.com/questions/2180554/in-perl-is-it-besser-zu-use-a-module-than-to-require-a-file Dies ist eine bessere post Bitte beziehen Sie sich darauf. –

Antwort

15

Sie sollten zuerst perldoc -f use und perldoc -f require lesen.

Sie sind ausgezeichnete Ressourcen und erklären, wie use funktioniert, wie es ruft import und dann require, und wie man theoretisch require in Bezug auf do implementieren könnte.

Wenn Sie sie bereits gelesen haben, haben Sie noch keine spezifischen offene Fragen, die die Standard-Dokumentation nicht gut genug, um nicht abdeckt und Sie möchten genauer beantwortet haben?

11

do wird den Code aufrufen, no ifs, ands oder buts zur Laufzeit. Dies ist normalerweise eine schlechte Idee, denn wenn das passiert, sollten Sie es wahrscheinlich in eine Subroutine einfügen.

require wird genau einmal und dann nicht mehr aufgerufen, zur Laufzeit. es kann es auch für ein Paket tun, in diesem Fall wird es tatsächlich gehen, das Paket für Sie zu finden.

use benötigt alles, was in dem Paketfall erforderlich ist, dann ruft import in diesem Paket auf.

import ist eine in einem Paket definierte Funktion. Es wird von use aufgerufen, aber es ist nicht anders.

+4

Sie haben vergessen zu erwähnen, dass 'use' zur ** Kompilierzeit ** passiert. 'use Foo;' ist äquivalent zu 'BEGIN {require Foo; Foo-> importieren(); } ' – daotoad

Verwandte Themen