Cheatah: entfernen von $array[$i]

Beitrag lesen

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!