Ich arbeite an einem Perl-Skript. Wie kann ich Befehlszeilenparameter übergeben?
Beispiel:
script.pl "string1" "string2"
perl
command-line
Lamcro
quelle
quelle
./script.pl
wird zur Laufzeit eine ganze Menge nichts passieren.Antworten:
Kommt darauf an, was du machen willst. Wenn Sie die beiden Argumente als Eingabedateien verwenden möchten, können Sie sie einfach übergeben und dann
<>
zum Lesen ihres Inhalts verwenden.Wenn sie eine andere Bedeutung haben, können Sie sie einfach verwenden
GetOpt::Std
undGetOpt::Long
verarbeiten.GetOpt::Std
unterstützt nur Einzelzeichenschalter undGetOpt::Long
ist viel flexibler. VonGetOpt::Long
:Alternativ
@ARGV
ist eine spezielle Variable, die alle Befehlszeilenargumente enthält.$ARGV[0]
ist das erste (dh"string1"
in Ihrem Fall) und$ARGV[1]
ist das zweite Argument. Sie benötigen kein spezielles Modul für den Zugriff@ARGV
.quelle
Contains the name of the current file when reading from <> .
Sie geben sie so weiter, wie Sie denken, und in Ihrem Skript erhalten Sie sie aus dem Array
@ARGV
. Wie so:Von hier aus .
quelle
$#ARGV + 1
dir hätte man auch sagen können@ARGV
ARGV[0]
oder$argv[1]
wenn Sie nach einem bestimmten Argument suchen.druckt jedes Argument.
quelle
Alternativ eine sexier perlish Art .....
my ($src, $dest) = @ARGV;
"Angenommen" zwei Werte werden übergeben. Zusätzlicher Code kann überprüfen, ob die Annahme sicher ist.
quelle
@ARGV
ohne Aktion von Ihnen verfügbar , genau wie C / C ++ sie über argv / argc liefertEine weitere Option ist die Verwendung von Perl-s, z.
Dann nenne es so:
Oder lesen Sie den Originalartikel für weitere Details:
quelle
Sie können direkt darauf zugreifen, indem Sie die spezielle Variable
@ARGV
einer Liste von Variablen zuweisen . Also zum Beispiel:perl tmp.pl 1 2 3 4 5
quelle
Wenn es sich bei den Argumenten um Dateinamen handelt, aus denen gelesen werden soll, verwenden Sie den Operator diamant (<>), um zu deren Inhalt zu gelangen:
Wenn die Argumente Optionen / Schalter sind, verwenden Sie GetOpt :: Std oder GetOpt :: Long, wie bereits von slavy13.myopenid.com gezeigt.
Wenn es sich nicht um etwas anderes handelt, können Sie entweder explizit durch @ARGV oder mit dem folgenden
shift
Befehl darauf zugreifen :(Beachten Sie, dass dies
shift
nur funktioniert, wenn Sie sich außerhalb allersub
s befinden. Innerhalb von asub
wird die Liste der Argumente abgerufen, diesub
an das Programm übergeben wurden, und nicht an das Programm.)quelle
quelle
Wenn Sie nur einige Werte möchten, können Sie einfach das @ ARGV-Array verwenden. Wenn Sie jedoch nach etwas Stärkerem suchen, um einige Befehlszeilenoptionen zu verarbeiten, sollten Sie Getopt :: Long verwenden .
quelle