Schrift
[thread]10614[/thread]

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

Leser: 3


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
renee
 2007-10-19 14:39
#101108 #101108
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
$#array gibt den Index des letzten Arrayelements (nicht die Anzahl der Elemente) zurück... Und wenn gar kein Element in einem Array ist (hier: kein Parameter übergeben wurde), dann ist der Index -1!

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;

my @array = qw(hallo welt);
warn ">>$#ARGV<<";

if( $#ARGV == -1 || (!grep{ $ARGV[0] eq $_} @array )) {
    warn "fehler";
}
else{
    warn "alles ok!";
}


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
C:\>argv.pl
>>-1<< at C:\argv.pl line 7.
fehler

C:\>argv.pl hall
>>0<< at C:\argv.pl line 7.
fehler

C:\>argv.pl hallo
>>0<< at C:\argv.pl line 7.
alles ok!

C:\>
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 14:41
#101109 #101109
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, du willst also, dass ARGV[0] gesetzt sein soll und ausserdem in @array enthalten ist. Wenn das nicht der Fall ist, willst du ne Usage-Meldung ausgeben?

Das wäre dann sowas:
Code (perl): (dl )
1
2
3
4
unless ( defined $ARGV[0] && grep { $ARGV[0] eq $_ } @array ) {
    usage();
}
# Hier gehts dann richtig weiter
Duff
 2007-10-19 14:47
#101110 #101110
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Mmh...also irgendwas mache ich falsch.

Funktioniert nämlich noch immer nicht.
Vor der if-Schleife mache ich noch folgendes:

Code (perl): (dl )
1
2
3
4
my $auswahl=qx{ls /Verzeichnis/ | /egrep '^[a-zA-z]+[^\.][0-9]+\$'};
my @array=split(/ /,$auswahl);

if...


Speichere ich die Elemente im Array vielleicht falsch?
D'OH
Daniel
renee
 2007-10-19 14:49
#101111 #101111
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann schau Dir doch mal mit CPAN:Data::Dumper das @array an, ob dort tatsächlich das drin ist, was Du erwartest...

Code (perl): (dl )
1
2
3
use Data::Dumper;
$Data::Dumper::Useqq = 1; # Danke pq
print Dumper \@array;


Und dann schauen was Du eingegeben hast...

edit: useqq in Useqq geändert...
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:53
#101112 #101112
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Ergibt folgendes:

Code (perl): (dl )
1
2
3
4
5
6
7
Name "Data::Dumper::useqq" used only once: possible typo at skript.pl line 11.
$VAR1 = [
          'wert1
wert2
wert3
'
        ];
D'OH
Daniel
Duff
 2007-10-19 15:00
#101113 #101113
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke an alle die mir geholfen haben.

Was für ein dummer Fehler. Da hätte ich ja noch lange suchen können.
Ein guter Tipp mit der Dumper-Ausgabe.

Musst nur folgende Zeile ändern, und schon funktioniert es:

Code (perl): (dl )
 my @array=split(/\s+/,$auswahl);
D'OH
Daniel
pq
 2007-10-19 15:55
#101116 #101116
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
renee+2007-10-19 12:49:44--
Code (perl): (dl )
1
2
3
use Data::Dumper;
$Data::Dumper::useqq = 1; # Danke pq
print Dumper \@array;

es heisst
$Data::Dumper::Useqq
und nicht
$Data::Dumper::ueseqq
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2007-10-19 15:56
#101117 #101117
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Duff+2007-10-19 12:53:41--
Code (perl): (dl )
Name "Data::Dumper::useqq" used only once: possible typo at skript.pl line 11.

$Data::Dumper::Useqq

das steht übrigens auch in der doku, die du dir gerne anschauen darfst.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2007-10-19 16:02
#101118 #101118
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
pq+2007-10-19 13:55:24--
es heisst
$Data::Dumper::Useqq
und nicht
$Data::Dumper::ueseqq


hab's oben geändert...
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/
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



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