[Cologne-pm] PERL - schnelles suchen & ersetzen in 100MB Datei
cem.sakaryali at easi.de
cem.sakaryali at easi.de
Wed Apr 28 10:13:13 CDT 2004
ok,
Ich wollte die Ausgabe in eine Datei umleiten
B steht fuer
open (B,"<out.txt");
Da hatte ich die Idee:
print B, next unless $matches and m/$matches/;
zu screiben, aber perl hat mit
"No comma allowed after filehandle at codes.pl line 85"
dies angemeckert.
Bei deinem Code:
Hatte ich folgende Ausgabe:
output file:
fsdlkgjd;gjdglsdfs;lk;lsksddl;fsk;s
fsdlkgjd;gjdgls2dfs;lk;ls2ksddl;fsk;s2
fsdlkgjd;gjdgls3dfs;lk;ls3ksddl;fsk;s3
fsdlkgjd;gjdglsdfs;lk;lsksddl;fsk;s
input war:
fsdlkgjd;gjdgls1dfs;lk;ls1ksddl;fsk;s1
fsdlkgjd;gjdgls2dfs;lk;ls2ksddl;fsk;s2
fsdlkgjd;gjdgls3dfs;lk;ls3ksddl;fsk;s3
fsdlkgjd;gjdgls1dfs;lk;ls1ksddl;fsk;s1
also ist etwas mit dem Erzaetzen schief gegangen?
Inzwischen hat der Kollege festgestellt, dass es nicht
gut ist, die hash eintraege zu loeschen da die keys mehrmals
vorkommen koennen.
Somit habe ich ein mix von euren Vorschlaegen gemacht.
> my $matches = join( '|', keys %ERSETZHALTER );
> qr/$matches/;
> while (<A>) {
> s[ $matches ][ $ERSETZHALTER{$&} ]xge;
> print B;
> }
jetzt soll die Bearbeitung ca 51-52 sec dauern. (vorher 250s)
Gruss
Cem
"A. Pagaltzis" <pagaltzis at gmx.de> schrieb am Wed, 28 Apr 2004 15:22:41 +0200:
> * cem.sakaryali at easi.de <cem.sakaryali at easi.de> [2004-04-28 09:51]:
> > Wolfgang:
> > print B, next unless $matches and m/$matches/;
> > !!! No comma allowed after filehandle at codes.pl line 85
>
> Was hat das B da zu suchen?
>
> > Aristoteles:
> > bei Dir habe ich noch ein Problem , die Erzaetzung funktioniert
> > nicht richtig:)
>
> * cem.sakaryali at easi.de <cem.sakaryali at easi.de> [2004-04-28 13:54]:
> > mit
> > s[ $matches ][ $subst_for{$&} ]xge;
> > geht es
>
> Wenn das richtig ist, dann hast du das Problem ungenügend
> spezifiert, und dann ist sowohl mein Code als auch der von
> Wolfgang zu umständlich.
>
> Warum du hier $& (womit du bei nicht-trivialen Skripten herbe
> Performanceprobleme bekommen wirst) und nicht $1 verwendest, ist
> mir unklar. Beide sollten das gleiche ergeben.
>
> Im Übrigen ist /e in dieser Formulierung auch noch überflüssig,
> obwohl der Optimierer das in diesem Fall vielleicht selbständig
> korrigiert.
>
> Ohne den von dir tatsächlich verwendeten Code und eine genauere
> Beschreibung, was du machen willst, werden wir nicht brauchbar
> weiterhelfen sondern nur raten können. Das ist ziemlich
> frustrierend.
>
> --
> Gruss,
> Aristoteles
>
> "Wer nicht über sich selbst lachen kann, nimmt das Leben nicht ernst genug."
> _______________________________________________
> Cologne-pm mailing list
> Cologne-pm at mail.pm.org
> http://mail.pm.org/mailman/listinfo/cologne-pm
--
| __| / _ \ / __|(_) | C e m S a k a r y a l i
| _| | _ |\__ \| | | Eupener Str. 159, Geb. 107
|___||_| |_||___/|_| | D-50933 Koeln GERMANY
Engineering GmbH | Tel: +49 221/650 496 12 Fax: 22
http://www.easi.de | mailto:cem.sakaryali at easi.de
More information about the Cologne-pm
mailing list