Schrift
[thread]10614[/thread]

$ARGV[0] in @array überprüfen

Leser: 3


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
Duff
 2007-10-18 18:20
#101039 #101039
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich möchte überprüfen, ob $ARGV[0] in @array ist bzw. wenn nicht im @array enthalten, dann eine Fehlermeldung.

Bsp.:
Code (perl): (dl )
1
2
3
4
5
6
# Die Usage
if(($#ARGV!=0) || (! $ARGV[0]) || (!(@array))) {
        print "\nUsage: $0 <Wert>\n\n";
        foreach (@array){print "$_\n";}
        exit 1;
}


[edit]
Mit dem (!(@array)) wird nicht das gewünschte Resultat geliefert, wenn ich als Argument was angebe, was nicht in @array enthalten ist.
[/edit]
D'OH
Daniel
GwenDragon
 2007-10-18 18:32
#101040 #101040
User since
2005-01-17
14548 Artikel
Admin1
[Homepage]
user image
Schau dir mal mit perldoc -f grep die Doku an
;)

Ansonsten:
Code: (dl )
1
2
3
4
5
6
7
use strict;
use warnings;

my @arr = ('malp', 'ach', 'test');

print grep(/$ARGV[0]/,@arr) ? 'JAAAA' : 'och nee :(';
1;
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

pktm
 2007-10-18 19:08
#101042 #101042
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Solltest du irgend etwas schreiben, was du mehr als zweimal benutzen möchtest kannst du dir mal das Modul CPAN:AppConfig ansehen.
http://www.intergastro-service.de (mein erstes CMS :) )
RPerl
 2007-10-18 19:59
#101045 #101045
User since
2006-11-26
384 Artikel
BenutzerIn

user image
@ Gwendragon: was ist eigentlich das

Code (perl): (dl )
1
2
print grep(/$ARGV[0]/,@arr) ? 'JAAAA' : 'och nee :('; # klar
1; # Was sagt das aus?


1 am Ende immer?

Danke und Gruß

RPerl
nepos
 2007-10-18 20:12
#101048 #101048
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das ist eigentlich nur in Modulen nötig. Da erwartet Perl, dass diese am Ende immer 1 zurückliefern.
pq
 2007-10-18 21:34
#101053 #101053
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
GwenDragon+2007-10-18 16:32:07--
Code: (dl )
print grep(/$ARGV[0]/,@arr) ? 'JAAAA' : 'och nee :(';

wobei ich erstmal keine regex verwenden würde:
Code (perl): (dl )
print grep $ARGV[0] eq $_, @arr ? 'JAAAA' : 'och nee :(';
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
Duff
 2007-10-19 10:17
#101066 #101066
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Ok, danke soweit.

Aber kann ich das ganze dann auch in meine Überprüfung einbauen, mit wenn der grep false ist, also wenn ein Element nicht im Array ist, dann soll er in den Anweisungsblock der if-Schleife gehen.
D'OH
Daniel
renee
 2007-10-19 10:57
#101074 #101074
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
unless( grep $ARGV[0] eq $_, @arr ){
    print "nicht enthalten\n";
}
else{
    print "enthalten\n";
}


oder

Code (perl): (dl )
print !(grep $ARGV[0] eq $_, @arr) ? 'JAAAA' : 'och nee :(';


oder was meintest Du?
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 10:57
#101075 #101075
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
So z.B.:
Code (perl): (dl )
1
2
3
if ( !grep { $ARGV[0] eq $_ } @arr ) {
     # grep hat nix gefunden...
}
Duff
 2007-10-19 12:06
#101083 #101083
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Was ich meine ist, dass ich das ganze gerne in dieser if-Anweisung unterbringen möchte:

Code (perl): (dl )
1
2
if(($#ARGV!=0) || (! $ARGV[0]) || (unless( grep $ARGV[0] eq $_, @arr ))) {
...
D'OH
Daniel
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



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