/ / Wie kann ich mein Perl-Skript nur ausführen, wenn es nicht mit require geladen wurde? - Perl, erforderlich

Wie kann ich mein Perl-Skript nur ausführen, wenn es nicht mit require geladen wurde? - Perl, erforderlich

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 № 1

Es 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:

  1. ein ausführbares Skript, das von der Kommandozeile aus als Programm aufgerufen wird (das sein main() Funktion)

  2. ein Modul zu use von woanders, in diesem Fall lädt es nur Funktionsdefinitionen

  3. eine Pod-Seite, die Sie ausführen können pod2text auf

Haben Sie danach gesucht?