Will mit grep ein @LogFileArray nach einem String durchsuchen und die Zeilennummer zurückbekommen.
Wie geht das am effektivsten?Hier meine für mich unbbefriedigende Lösung...
my @LogFileArray=<$FILE_HANDLER>;
Habe mich erst mal mit einer Konvertierung des Fileinhaltes in einen Hash beholfen, indem der Key als Zeilennummer durchnummertiert wird:
#fill in
$I=1; %LogFileHash=(); foreach $line (@LogFileArray) {$LogFileHash{$line}=$I; $I++;}
Wem es interessiert hier die Funktion die den FileHash durchsucht:
sub GetLineFromSearchString {
my $SearchString=$_[0];
@GrepResultArray=grep (/^.*$SearchString.*$/, (keys %LogFileHash));
if ($#GrepResultArray == 0) {return($LogFileHash{$GrepResultArray[0]});}
else {#print "Warning: \"$SearchString\" doesn't found!\n";exit;};
}
######Main
#Hier soll nach der Zeile "Invoices successfully extracted\\s+:" gesucht werden
#$invoices_extracted_line enthält dann die Zeilennummer
$invoices_extracted_line= GetLineFromSearchString("Invoices successfully extracted\\s+:");
Viele Grüße Gernot
Datum: 09.12.2004-09:34
