2009-05-26 3 views
3

Ich habe eine Bibliothek in Perl geschrieben, die eine bestimmte Funktion enthält, die Informationen über einen Server als Zeichenkette zurückgibt. Kann ich diese Funktion direkt von einer Shell aus aufrufen?Wie kann ich eine Perl-Funktion von einem Shell-Skript aufrufen?

Mein Chef fragt: "Kannst du es vorerst von einer Shell aus anrufen?" Weil er das gesagt hat, denke ich, ich sollte es tun können, aber wie mache ich das?

+0

Haben Sie 'Mann perl' versucht? – Ismael

+0

Hmm Ich frage mich, ob das wirklich eine wertvolle Frage ist, wenn niemand die Formulierung korrigiert ... – Mark

Antwort

7

Da Perls Kommandozeilenargumente ein bisschen undurchschaubar sind, würde ich es in ein einfacheres Perl-Skript einfügen, das die Funktion aufruft. Erstellen Sie zum Beispiel ein Skript serverinfo, die enthält:

#!/usr/bin/perl 

require 'library.pl'; 
say library::getServerInformation(); 

dann laufen:

chmod u+x serverinfo 

Der Vorteil es auf diese Weise tun, ist die Ausgabe und Argumente des Skripts kann korrigiert werden, wenn die Funktion selbst ändert . Ein Befehlszeilenskript wie dieses kann als eine API betrachtet werden, die sich nicht ändern sollte, wenn sich die Implementierung ändert.

10
perl -MServerlib=server_information -e 'print server_information()' 

ist ein weiterer Weg, dies zu tun, aber nur, wenn Serverlib exportiert server_information Unter. Wenn dies nicht der Fall ist, müssen Sie stattdessen die folgenden Schritte ausführen:

perl -MServerlib -e 'print MServerlib::server_information()' 
+1

Das hört sich mehr danach an, wie das OP angefordert wird. – si28719e

+0

+1, aber dies sollte auch ein Beispiel für die Verwendung von Backticks enthalten, um die Ausgabe dieses Ausdrucks in einer Variablen für die Verwendung im Shell-Skript zu erfassen. –

Verwandte Themen