Ich habe ein Perl-Skript. Wenn es direkt von der Befehlszeile aufgerufen wurde, möchte ich ausführen sub main
.
Wenn es mit require aufgerufen wurde, möchte ich nichts tun und warten, bis das Anruferskript anruft sub job
Es ist Freizeit.
Antworten:
1 für die Antwort № 1Es gibt eine empfohlene Perl-Lösung für Code, die sowohl von einem Skript als auch von einem Perl-Modul ausgeführt werden kann.
Es wird normalerweise "Modulino" genannt, das als Google- oder SO-Suchwort verwendet werden kann, um How-tos zu finden.
Hier ein How-To mit Referenzlinks:
Perl-Skript verwendbar als Programm und als Modul
1 für die Antwort № 2
Es klingt, als ob Sie Ihr Skript in ein Modul und ein Frontend-Programm aufteilen sollten. Dann können Programme, die die Funktionalität nutzen wollen, das Modul mit laden use
(oder require
, wenn Sie darauf bestehen) und das Stub-Programm kann das tun und der Anruf der job
Unterroutine auch.
1 für die Antwort № 3
Du könntest so etwas wie das:
#!/usr/bin/env perl
package Some::Module;
sub job { ... }
sub main { ... }
if (!caller) {
main(@ARGV);
}
1;
__END__
=head1 NAME
Some::Module - program, podpage, and module
....
Das kann jetzt gleichzeitig alles sein:
ein ausführbares Skript, das von der Kommandozeile aus als Programm aufgerufen wird (das sein
main()
Funktion)ein Modul zu
use
von woanders, in diesem Fall lädt es nur Funktionsdefinitioneneine Pod-Seite, die Sie ausführen können
pod2text
auf
Haben Sie danach gesucht?