array greppen

04/11/2013 - 08:59 von Andre Tann | Report spam
Hallo zusammen,

mit folgender Frage weiß ich gerade nicht weiter:

push (@array,"a,b,c");
push (@array,"d,e,f");

print grep (/e/,@array),"";

=> funktioniert, liefert "d,e,f" als output.


Mach ich aber das, was ich eigentlich will, nàmlich ein zweidimensionales Array greppen, dann gehts natürlich nicht:

push (@array,["a","b","c"]);
push (@array,["d","e","f"]);

print grep (/e/,@array),"";


Damit kriege ich höchstens dann einen Output, wenn die Verweise zufàllig ein e enthalten. Wie bekomme ich die Zeile, die ich haben will?

Danke, und viele Grüße!
Andre Tann
 

Lesen sie die antworten

#1 Peter J. Holzer
04/11/2013 - 09:46 | Warnen spam
On 2013-11-04 07:59, Andre Tann wrote:
Mach ich aber das, was ich eigentlich will, nàmlich ein
zweidimensionales Array greppen, dann gehts natürlich nicht:

push (@array,["a","b","c"]);
push (@array,["d","e","f"]);

print grep (/e/,@array),"";


Damit kriege ich höchstens dann einen Output, wenn die Verweise
zufàllig ein e enthalten. Wie bekomme ich die Zeile, die ich haben
will?



Da Du ein zweidimensionales Array durchsuchen willst, brauchst Du zwei
verschachtelte greps (eines für die Elemente jeder Zeile und eines für
die Zeilen):

my @found = grep { grep /e/, @$_ } @array;

Und natürlich musst Die Zeilen auch in eine druckbare Form bringen,
außer Du willst wirklich die Pointer drucken:

for (@found) {
say "found: ", join(',', @$_);
}

hp

_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel

Ähnliche fragen