Christian Kruse: Hat jemand Tipps zur Optimierung dieses (teil)scriptes?

Beitrag lesen

Hi,

hm, ich hab die Erklärungen vergessen, sorry ;) (danke, Antje, für den Hinweis *g*)

$benutzer = "irgendwas";

open(DATEI, "/.....adressen.txt") die $!;

<DAT> gibt entweder eine Liste der Zeilen zurück oder eine Zeile - je nachdem, ob es in einen Array oder

Skalar eingelesen wird. Also können wir sofort mit grep() die gesuchten Zeien raussuchen

@zeilen = <DAT>;
@lst = grep(/$benutzer/,@zeilen);
close(DAT);

@neu = ();
foreach (@lst)
{

Dann die gefilterte List parsen und den Counter um eines erhöhen und der neuen Liste anfügen

s/^((.+){4})([0-9]+)(.*)$/"$1".($3+1)."$4"/e;
push(@neu,$_);
}

Die beiden Listen zusammenfügen

push(@neu,grep(!/$benutzer/,@zeilen));

und schreiben ;)

open(DATEINEU, ">/......adressenneu.txt") die $!;
print DATEINEU @neu;
close(DATEINEU);

Dadurch sparst du dir überflüssige Schleifendurchläufe, usw.
Solltest du nur eine Zeile darin haben, die matchen kann, dann kannst du das Script noch vereinfachen
und die foreach-Sache weglassen und den Ausdruck einfach auf das erste Element der gefilterten
Liste anwenden.

mfg
CK1

<img src="http://wwwtech.de/images/banner.jpg" alt="">
http://wwwtech.de/
http://wwwtech.de