Struppi: Inhalt von zwei Dateien vergleichen

Beitrag lesen

Da RegExp ja nachgesagt wird, dass sie Performancekiller seien, wäre es mal interessant zu erfahren, ob ein Hash-Slice nicht eventuelle Performancegewinne bringen würde:

Ich glaub nicht, wenn ich das richtig verstanden habe, dass in jeder Zeile nur ein Wort steht. Aber trotzdem könnte man die Suche beschleunigen.

open(DATEI_1, "datei_1") || die "Kann Datei nicht öffnen, weil: $!";

my @suchen = <DATEI_1>;
close(DATEI_1);


>   

my $suchmuster = join '|', map quotemeta, @suchen;  
  

>   
> open(DATEI\_2, "datei\_2") || die "Kann Datei nicht öffnen, weil: $!";  
> while (<DATEI\_2>) {  
>   chomp($\_};  
  
Das Newline dürfte hier nicht stören.  
  
if( /$suchmuster/ )  
{  
...  
}  
  
Wobei hier dann noch ein wenig mehr gemacht werden muss um rauszufinden, welche Suchbegriffe gefunden wurden.  
  
Das ganze läuft dann so ganz gut:  
~~~perl
#!/usr/bin/perl -w  
  
use strict;  
  
my @suchen = qw(Datei Text die);  
my $suchmuster = join '|', map quotemeta, @suchen;  
  
while(<DATA>)  
{  
    my $zeile = $_;  
    my @gefunden = ($zeile =~ /($suchmuster)/gi);  
    if(@gefunden)  
    {  
       foreach(@gefunden)  
       {  
           print "$_ Gefunden in Zeile: $.\n";  
       }  
    }  
}  
  
__DATA__  
Ein kleiner Text anstatt einer Datei  
zum probieren der suche nach mehreren  
Begriffen in einer Datei die ganz viele Zeilen hat  
Ich bin gespannt ob die suche auch funktioniert  

Struppi.