Leser: 21
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";
}
QuoteThe getopts() function returns true unless an invalid option was found.
getopts( ... ) or print_usage();
test.pl -A Wert1 -E Wert2 -G Wert3 -Z Wert4
1
2
3
4
getopts('A:E:G:Z:', \%opts);
my @werte = values %opts;
print "\n\tWert 0: " .$werte[0] ." Wert1: " .$werte[1] ." Wert2: " .$werte[2] ." Wert3: " .$werte[3];
Quote...
Nun möchte ich die Werte auslesen:
Code: (dl )1
2
3
4getopts('A:E:G:Z:', \%opts);
my @werte = values %opts;
print "\n\tWert 0: " .$werte[0] ." Wert1: " .$werte[1] ." Wert2: " .$werte[2] ." Wert3: " .$werte[3];
Mein Problem ist, dass der Parameter , den ich unter A angegeben habe, nicht unter $werte[0] steht.Die Ausgabe print... zeigt mir den Inhalt an. Da ist alles durcheinander...
Woran liegt das??
my @werte = values %opts
my @werte = ( $opts{A} , $opts{E}, $opts{G}, $opts{Z} ) ;
my @werte = @opts{qw(A E G Z)} ;