Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10614[/thread]

$ARGV[0] in @array überprüfen (Seite 2)

Leser: 3


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
renee
 2007-10-19 12:12
#101085 #101085
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
if( $#ARGV==0  || !$ARGV[0] || !grep{ $ARGV[0] eq $_,}@arr ) {
...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2007-10-19 12:16
#101087 #101087
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Dachte ich auch, aber funktioniert nicht!

Ich gelange nun immer in den Anweisungsblock der if-Schleife, auch wenn ich einen Wert aus dem @array als $ARGV[0] angebe.
D'OH
Daniel
renee
 2007-10-19 12:29
#101091 #101091
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man beachte das "==" statt dem "!=" im ersten Teil der if-Bedingung...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2007-10-19 13:01
#101092 #101092
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Ich will hier überprüfen, ob ein Argument angegeben wurde und wenn ein Argument angegeben wurde, ob dieses Argument im Array steht (alle Elemente im Array sind nämlich gültig.

Code (perl): (dl )
1
2
3
4
5
6
7
8
# Die Usage
if(($#ARGV==0) || (! $ARGV[0]) || (grep{ $ARGV[0] eq $_,} @array )) {
        print "\nUsage: $0 <argument>\n\n";
        print "argument: \n";
        print '-'x20 . "\n";
        foreach (@array){print "$_\n";}
        exit 1;
}


Im Moment lande ich immer wieder in der Usage.
D'OH
Daniel
renee
 2007-10-19 13:03
#101094 #101094
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man beachte das "!" vor dem "grep" in meinem Code...

und mach das "," mal nach dem $_ weg...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2007-10-19 13:34
#101098 #101098
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Baust du hier einen eigenen Parser für die Kommandozeilenparameter? Warum nutzt du da nicht gleich CPAN:Getopt::Long?
Duff
 2007-10-19 14:17
#101104 #101104
User since
2006-10-06
283 Artikel
BenutzerIn

user image
nepos+2007-10-19 11:34:28--
Baust du hier einen eigenen Parser für die Kommandozeilenparameter? Warum nutzt du da nicht gleich CPAN:Getopt::Long?


Eigentlich nicht. Will nur den ersten und einzigen Parameter überprüfen.

Mit


Code (perl): (dl )
1
2
if(($#ARGV==0) || (!grep{ $ARGV[0] eq $_} @array )) {
..

lande ich auch wieder direkt in der Usage.

Zur ersten Überprüfung: Wenn die Anzahl der angegebenen Parameter = 0 ist, also wenn nichts angegeben wurde,

oder

Zur zweiten Überprüfung: Wenn der erste angegebene Parameter nicht im Array enthalten ist.

ABER: Wieso gelange ich trotzdem, wenn beide Bedingungen erfüllt sind, in den Anweisungsblock der Schleife???
D'OH
Daniel
renee
 2007-10-19 14:23
#101105 #101105
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ähm... muss $#ARGV == -1 heißen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2007-10-19 14:28
#101106 #101106
User since
2006-10-06
283 Artikel
BenutzerIn

user image
renee+2007-10-19 12:23:49--
ähm... muss $#ARGV == -1 heißen...


Wieso?

...und funktioniert leider noch immer nicht. Nehme ich als ersten Parameter einen Wert aus dem Array, so gelange ich trotzdem wieder zur Usage.
D'OH
Daniel
Duff
 2007-10-19 14:36
#101107 #101107
User since
2006-10-06
283 Artikel
BenutzerIn

user image
So, habe noch eine kleine Prüfung eingebaut:

Code (perl): (dl )
1
2
if(($#ARGV==-1) || (!grep{ $ARGV[0] eq $_ } @array ? print $_, "Vorhanden\n" : print $_, "Nicht vorhanden!\n")) {
...


Und die Ausgabe ist dann:
Code (perl): (dl )
1
2
3
4
Use of uninitialized value in print at skript.pl line 12.
Vorhanden

Usage...
D'OH
Daniel
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2007-10-18 18:20.