Thread Parameter übergeben per Konsole (4 answers)
Opened by la_dy82 at 2010-12-07 11:17

la_dy82
 2010-12-07 11:17
#143369 #143369
User since
2010-10-25
86 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich möchte Parameter einem Perl-Skript über die Konsole übergeben:
test.pl -c Wert1 -t Wert2 -x Wort0

Ich verwende das Modul use Getopt::Std
Es funktioniert super. Wenn ich jedoch einen falschen Buchstaben eingebe:
test.pl -c Wert1 -t Wert2 -Z
Kommt nur die Fehlermeldung: Unknown Option: Z
Ich würde bei diesem eingetretenem Fehler ein usage erzeugen.
Wie kann ich das abfragen, ob die Eingabe korrekt war, oder was falsch eingegeben worden ist?

Die Abfrage, ob nur ein Wert eingegebn ist, frage ich mit ARGV[] ab.

Danke für eure Antworten.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use Getopt::Std;
%options=();
getopts("od:fF",\%options);
$sum=0;
$sum2=0;

# like the shell getopt, "d:" means d takes an argument
if (defined ($options{o}) ){
$sum+=1;}
if (defined ($options{d})){
$sum+=1;}
if (defined ($options{f})){
$sum+=1;}
if (defined ($options{F})){
$sum+=1;}
#zusätzliche Argumente am Ende
if ($ARGV[0]){
$sum2+=1;}
if ($ARGV[1]){
$sum2+=1;}
if ($ARGV[2]){
$sum2+=1;}

print "sum: " .$sum;
print " sum2: ". $sum2;

if ($sum == 4 && $sum2 ==0){
print "Alles i.O!!!";

}

else
{
print "Falsche Parameter!!!";
&Usage;
}


sub Usage{
print "Usage: test.pl [Parameter] (Zahlenwert)";
print "\nBeispiel: blablabla";
}

//MODEDIT GwenDragon: Bitte Code korrekt in CODE-Tags stellen (mit Vorschau überprüfen)
Last edited: 2010-12-07 11:33:16 +0100 (CET)

View full thread Parameter übergeben per Konsole