Matti Maekitalo: Array - elemente löschen - weniger als 3 Zeichen, ohne Zahlen!

Beitrag lesen

use Mosche;

Ich habe einen Array. Nun will ich alle Elemente löschen, die weniger als 3 Zeichen haben, falls dies buchstaben sind. Wenn es aber zahlen sind, sollen die elemente belassen werden.

Wennn ich alle Elemente löschen will, die kleiner als 3 Zeichen haben, so kann ich das laut einem Tipp so machen:
my @new_ary = grep { length($_) > 3 } @old_ary;
Was ist nun aber, wenn ich die Zahlen stehen lassen will? Wo/wie kann ich diese Bedingung zusätzlich einfügen?

Schon mal bei 'perldoc -f grep' nachgeschaut? Nein? Dann tu das jetzt.

Damit du mal selbst darauf kommen kannst, solltest du in der Langform anfangen:

my @old_array ( 1 .. 4, "sdf", "rdsfg");
my @new_array;
foreach (@old_array) {
   if ((/\w/ && length($_) > 3) or /^\d+$/) {
     push @new_array, $_;
   }
}

Zu deiner Frage:
Die Bedingung, ob ein Element aus dem alten Array in das neue übernommen werden soll, steht in den geschweiften Klammern nach grep.

use Tschoe qw(Matti);

--
neues Selftreffen?
http://selfcommunity.teamone.de/foren/community/?t=2241&m=2687
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.