[Cologne-pm] PERL - schnelles suchen & ersetzen in 100MB Datei
cem.sakaryali at easi.de
cem.sakaryali at easi.de
Tue Apr 27 13:07:21 CDT 2004
Hallo,
ein ehemaliger Kollege hat mich gefragt, ob sein Code
(lese 100MB file und mache =~ s///)
optimiert werden koenne. Ich habe einige Aenderungen gemacht
aber bin der Meinung, dass unsere Experten hier es viel besser machen
koennen.
Hat einer von euch einen Vorschlag.
x
Gruss
Cem
P.S. %ERSETZHALTER habe ich angenommen.
-----------------------
use Benchmark qw(:all) ;
timethese(1, {
'kollege' => sub {
open (A,"<x.txt");
my %ERSETZHALTER =
( 's1' => 'e1',
's2' => 'e2',
's3' => 'e3',
's4' => 'e4',
);
foreach $i (<A>) {
# # Mache Ersetzungen aller formatierten Platzhalter
#
foreach $p ( sort keys %ERSETZHALTER ) {
$SUCHEN = $p ;
$ERSETZEN = $ERSETZHALTER{$p} ;
$i =~ s/$SUCHEN/$ERSETZEN/g ;
# # Wenn Ersetzung vorgenommen wurde,
# dann wird Suchbegriff aus Hash geloescht #
if ( $& eq $p ) { delete $ERSETZHALTER{$p} ; }
} open (A,"<x.txt");
# # Schreibe veränderte Zeile in die neue Datei #
# print $i ;
}
},
'cem' => sub {
open (A,"<x.txt");
my %ERSETZHALTER =
( 's1' => 'e1',
's2' => 'e2',
's3' => 'e3',
's4' => 'e4',
);
while (<A>) {
foreach $p ( keys %ERSETZHALTER ) {
s/$p/$ERSETZHALTER{$p}/g ;
if ( $& eq $p ) { delete $ERSETZHALTER{$p} ; }
}
# print ;
}
},
});
-------------------------
--
| __| / _ \ / __|(_) | 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name:
Type: application/octet-stream
Size: 0 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/cologne-pm/attachments/20040427/4a3334c8/attachment.obj
More information about the Cologne-pm
mailing list