Hi,
splice wurde ja schon genannt, alternativ dazu kannst Du auch
@array = @array[0..$i-1,$i+1..$#array];
schreiben. Ich möchte hier aber mal Deinen Code ein wenig optimieren ;-)
foreach (@array) {
if ( $_ =~ / ^$string/ ) {
$_ =~ /.../ schreibt man einfach /.../, also:
if (/^$string/) { # wobei das Leerzeichen nach dem ersten / vermutlich ohnehin falsch ist
$_ =~ s/^$string//;
Dito, also einfach s/^$string//;
Allerdings wird s/x/y/ sowieso nur dann ausgeführt, wenn /x/, also ist die if-Anweisung unnötig... :-) Dein Code könnte also genausogut lauten:
foreach (@array) {
s/^$string//;
...
}
Das nur nebenbei. Natürlich führen wieder viele Wege nach Rom, Deiner ist nicht falsch - ich wollte es nur gesagt haben, weil hier die Optimierung förmlich ins Auge sticht ;-)
Cheatah
P.S.: Ich verwende bewußt auch lieber "$_ =~ /.../", weil man dann eher sieht, was passiert. Außerdem ersetze ich $_ gewöhnlich auch durch eine eigene Variable ("foreach $foo (@array)"), es ist einfach einsichtiger!