Gibt es mehr Code, den Sie im Beispiel nicht angegeben haben? Wie Ausgabe des Ergebnisarrays? Ansonsten gibt es einige Dinge zu beachten:
- in regex führenden Raum: Dies wird nicht Ihr Beispiel passen, da
result
dort am Anfang der Zeile beginnt. Im Allgemeinen, wenn Sie mit möglicherweise auftretenden Räumen flexibler sein möchten, fügen Sie \s*
an den entsprechenden Stellen ein.
- wissenschaftliche Nummer Übereinstimmung: Wenn Sie andere Zahlen als wissenschaftliche Notation mit negativen Exponenten erwarten, müssen Sie Ihre Regex so übernehmen. Es gibt viele Beispiele da draußen.
Für Ihren erweiterten Code:
- benutzen Sie bitte
use strict;
und use warnings;
in jedem Skript
- verwenden, um den 3-Argument-Modus von
open
und möglicherweise lexikalischen Datei-Handler (my $fh
statt FH
). Der 3-Argument-Modus stellt sicher, dass Sie nicht vergessen, unter anderem den tatsächlichen Modus (Lesen/Schreiben/etc.) Anzugeben, unter dem die Datei geöffnet werden soll.
close(FH)
Ihre Datei-Handler, bevor sie auf anderen Dateien
nicht schließen IN2
ein Problem zu sein in Ihrem Code scheint, zum Beispiel unter Verwendung.
Wollen Sie diese '3.58e-01 'als Wert, denn wenn Sie' bearbeiten if ($ _ = ~/Ergebnis = (\ d + \ d + e. \ d +) /) {'zu' if ($ _ = ~/Ergebnis = (\ d +. \ d + e- \ d +) /) {', Dies wird nur die oben beschriebene Ausgabe erfassen. Bitte bearbeiten Sie Ihre Frage mit weiteren Details. – AbhiNickz
@AbhiNickz: Ich habe weitere Details hinzugefügt. – rahdirs
Versuchen Sie, Ihren Dateinamen als "output_vth _" zu geben. $ Vth. ". Txt" – Jaison