#!/usr/bin/perl use strict; use warnings; use List::Util qw//; =pod =head1 FRAGE VON KERSTIN Is es in Perl möglich, in einem dynamischen Array ein bestimmtes element zu löschen? Die Stelle an der das Element ist, steht nicht fest. =cut my @array = List::Util::shuffle ('Zitrone', 'Apfel', 'Birne', 'Kiwi', 'Pflaume', 'Banane', 'Kiwi', 'Kiwi'); # Durch shuffle weiß ich nicht, an welcher Stelle Kiwi ist... print "Vorher:\n"; print "'$_'\n" for @array; print "Entferne 'Kiwi' ...\n"; # # Möglichkeit 1 mit Grep und zwei Arrays: # my @ohnekiwi = grep {$_ ne 'Kiwi'} @array; print "Nachher 1:\n"; print "'$_'\n" for @ohnekiwi; # # Möglichkeit 2 mit splice: # my @kiwiindex; for (0..$#array) { push @kiwiindex, $_ if $array[$_] eq 'Kiwi' } if (@kiwiindex) { splice @array, $_, 1 for reverse @kiwiindex; } else { print "'Kiwi' nicht im Array gefunden\n"; } print "Nachher 2:\n"; print "'$_'\n" for @array;