Leser: 18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
my $suchbegriff = 'bla'; my @array_of_hashrefs = ( { name => 'BLAH', alter => 9 }, { name => 'Foo B. Ar-Baz', alter => 22 } ); # Namen durchsuchen @found_names = map { $_->{name} } # Erzeuge daraus eine Liste von Namen grep { # Suche $_->{name} =~ /$suchbegriff/i } # nach: match name dem Suchbegriff mit ignorierter Groß/Kleinschreibung @array_of_hashrefs; # Hashes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
use 5.12.0; my $search = '1'; my @AoH = ( { name => 'bla', alter => 9, }, { name => 'baba', alter => 19, }, { name => 'foo', alter => 11, }, ); my @matches; for my $i ( 0 .. $#AoH ) { # add index if searchstring was found in hash values push @matches, $i if grep { m/\Q$search\E/ } values %{ $AoH[$i] }; } # print result of search say "$search matched in elements: @matches";
1
2
3
4
5
6
7
8
9
10
my $search = 'search';
my @matches;
for my $i ( 0 .. $#list ) {
if ( grep { /$search/i } values %{ $list[$i] } ) {
push @matches, \%{ $list[$i] }
}
}
Guest peter.pwelchen effekt hat hier der pattern matching operator ? und für was steht \Q und \E ?
m/\Q$search\E/
my @matches = grep { grep /$search/i, values %$_ } @list;
Guest peter.pNein.werden erst alle values gegrept und danach nach dem string gesucht ?
Guest peter.pwie könnte man es in 2 grep befehle auseinanderbauen ?