User since
2008-03-17
54
Artikel
BenutzerIn
Hallo, Forum!
Ich habe eine Liste über die ich iterieren und nach bestimmten Bedingungen ein Element entfernen möchte.
Nun hab ich das zunächst mit einer foreach-Schleife probiert, aber das Problem ist ja nun, dass nicht mehr über die gesamte Liste iteriert wird, nachdem ein Element daraus entfernt wurde.
Meine Frage wäre nun, ob es eine elegante Möglichkeit gibt das zu lösen oder muss ich im C-Manier per for-Schleife und urprünglicher Listengröße die Liste n-mal durchgehen?
Viele Grüße, tsy
Es geht sehr viel eleganter mit
grep:
my @list = qw/foo bar buz qiz 1 2 3 one two three/;
my @filtered = grep /^\w+$/, @list;
Und grep lässt sich auch mit einem Block anwenden nicht nur mit einem Regex.
http://www.hidemail.de/blog/grep-perl.shtml
Grep ist bis zu 3mal schneller als eine normale Iteration in einer Schleife. Aber das musst du testen, falls es auf Geschwindigkeit ankommt.
User since
2008-03-17
54
Artikel
BenutzerIn
Hi, in der Liste befinden sich Objekte, deren Attribute verarbeitet werden. Ich guck mir mal die verlinkte Seite an und teste, ob grep was für mich ist. Danke schonmal soweit :)