2010-12-10 8 views
-3

Wenn ich eine Perl-Datei mit Eingabe der Befehlszeile ausführen, sollte ein Feld in der Tabelle aktualisiert werden.Wie parst du einfache Kommandozeilenoptionen mit Perl?

Zum Beispiel

perl function_impl.pl --address_only 

, wenn er den Eingangsparameter empfängt --address_only dann sollte t nur Adressfeld in der db dieser Perl script.How aktualisieren, dies umzusetzen.

+3

Was hast du es bisher versucht? Welcher Teil gibt dir Ärger? Befehlszeilenoptionen? DB Updates? – DVK

+1

Wie werden Sie den Aktualisierungswert angeben? – DVK

+2

Auch von den 2 Fragen, die die Leute für Sie beantwortet haben, haben Sie keine einzige Antwort aufgegriffen oder akzeptiert. Mach weiter so und die Leute werden nicht sehr bereit sein, deine Fragen zu beantworten. – DVK

Antwort

-4

Wenn Ihr Skript Null oder ein Argument akzeptiert können Sie tun:

if($#ARGV == 0) {  # one argument passed 
     if($ARGV[0] eq '--address_only') { 
       # --address_only passed 
     } else { 
       # something else passed 
     } 
}elsif($#ARGV == -1) { # no argument passed 

}else{     # more than one arg passed 

} 
+2

'@ ARGV' manuelle Parsing ist überhaupt nicht skalierbar. Ein CPAN-Modul für das Parsen von Optionen (Getopt :: Std oder Getopt :: Long) sollte stattdessen immer verwendet werden, um Skalierbarkeit bereitzustellen (geschweige denn Lesbarkeit). – Aye

+1

Warum überprüfen Sie '$ # ARGV', wenn Sie die Anzahl der Argumente wirklich wollen? Das ist in '@ ARGV' verfügbar, ohne Probleme mit den einzelnen Programmen. – Ether

11

Getopt::Long ist eine sehr häufige und sehr einfache Möglichkeit, in Perl Kommandozeilenparameter zu analysieren.

Bitte zeigen Sie uns den Code, den Sie verwenden, um die Tabelle zu aktualisieren, damit wir Ihnen bei Bedarf mit diesem Teil helfen können.

Auch, wie werden Sie den Aktualisierungswert liefern? Von Ihrem Beispiel werden Sie es nicht über die Befehlszeile bereitstellen, also nehme ich an, dass es hart codiert ist? Wenn Sie auf der Kommandozeile angeben möchten, den obigen Code ändern Werte für den Parameter zu akzeptieren:

my %args =(); 
GetOptions (\%args, 'address_only=s'); # will store address value in $args{address_only} 
# Usage: function_impl.pl --address_only [email protected] 

Als triviales Beispiel können Sie „SET“ Teil der Update-Anweisung bauen:

Verwandte Themen