Gibt es eine bessere Möglichkeit, doppelte Zeichenketten aus einer Datei in Perl zu ziehen?
Ich bin derzeit durch eine Protokolldatei looping durch bestimmte Merkmale herausziehen. Ich muss nach einer eindeutigen Zeichenfolge suchen, wenn es dupliziert wird, und wenn die Zeichenfolge dupliziert ist, dann ignoriere dieses Protokoll. Momentan benötigt mein Code eine absurde Menge an Zeit, um zu laufen (oder ich bin in einer Endlosschleife) yippey. Gibt es eine bessere Möglichkeit, Duplikate aus einer Datei zu ziehen und sie auf Eindeutigkeit zu prüfen?
close($handle);
$test = "testFile.txt";
open($handle, '<', $domainAnalysis) or die "Cannot open file: $!";
open($hand, '>', $test) or die "Cannot open file: $!";
my %uniq;
while ($search = <$handle>) {
if ($search =~ /Mail ID: ([^:]*)\n/g) {
$uniq{$search}++;
}
my @sortedHash = sort keys %uniq;
foreach $i (@sortedHash) {
if ($i eq $search) {
print $hand $search;
print $hand scalar <$handle> for 1 .. 2;
}
}
}
Jede Hilfe würde sehr geschätzt werden. Ich bin irgendwie festgefahren.
Edit:
Es ist derzeit eine Protokolldatei liest und benötigten Informationen in eine neue Datei zu ziehen. Die neue Datei wird in dem Format dieser
Mail ID: b12342534
Domain : [email protected]
Status Message = Sent
Mail ID: a32432234
Domain : [email protected]
Status Message = Deferred
ausgedruckte Ausgabe: Nun, das Programm stoppt nie tatsächlich. Es dauert ewig und meine Geduld wird es nicht den ganzen Weg laufen lassen.
geben Sie bitte Beispiel Eingabe/Ausgabe als auch http://stackoverflow.com/help/ mcve – Sundeep
Ohne Beispieldaten ist es schwer zu beantworten. Aber ich denke, es wird sein, weil deine innere Schleife stetig größer wird und jede Iteration, du sortierst es. – Sobrique
Einige tatsächliche Stichprobendaten sind erforderlich. "so etwas wie" ist nicht genug für uns zu helfen. (Es muss nicht "echte" Daten sein, aber es muss GENAU die richtige Formatierung haben) – Sobrique