[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