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.