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

in array suchen

Leser: 1


<< >> 5 Einträge, 1 Seite
Strazke
 2005-08-26 01:41
#57384 #57384
User since
2005-07-11
120 Artikel
BenutzerIn
[default_avatar]
Hallo, gibt es eine andere möglichkeit als mit foreach ..., ein Array zu durchsuchen und zu überprüfen, ob da ein Bestimmtes Wort drin ist?

BSP: Ich schreibe ein CGI script, was nur bestimmte websiten aufrufen soll (der sicherheit wegen). Diese Seiten will ich in ein Array schreiben und wenn es die gewünschte seite nicht gibt, soll eine Fehlermeldung erscheinen.

Weis jemand wie ich das machen kann?
J-jayz-Z
 2005-08-26 01:58
#57385 #57385
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
jo, mit map
Code: (dl )
1
2
map { print "jo" if $_ =~ /foo/ } @bar;
@new = map { "$_" if $_ =~ /foo/ } @bar;

oder mit grep:
Code: (dl )
@new = grep { /foo/ } @bar;
\n\n

<!--EDIT|J-jayz-Z|1125009154-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-08-26 04:57
#57386 #57386
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
oder wieder als hash anstatt als array...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;

my %websites = (
"http://www.perl-community.de" => 1,
"http://www.microsoft.de" => 1,
"http://www.perlmonks.org" => 1,
);

my $site1 = "http://www.perl-community.de";
my $site2 = "http://www.perl.de";

print "$site1: " . (exists $websites{$site1} ? "okay" : "forbidden") . "\n";
print "$site2: " . (exists $websites{$site2} ? "okay" : "forbidden") . "\n";
J-jayz-Z
 2005-08-26 05:41
#57387 #57387
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du mit deinen Hashes *g*
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Taulmarill
 2005-08-26 13:09
#57388 #57388
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
der hinweis auf hashes ist gar nicht so schlecht, allerdings lösen hashes natürlich nicht jedes problem.
map sollte man zum durchsuchen eigendlich nicht verwenden. da würde ich die version mit grep bevorzugen. auch sollte man weder map noch grep im "void context" benutzen, also ohne die ausgabe der funktionen zu verarbeiten, da in solchen fällen eigendlich immer eine for-schleife die bessere wahl ist.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< >> 5 Einträge, 1 Seite



View all threads created 2005-08-26 01:41.