Moin, moin,
ich steh momentan gerade auf dem Schlauch. Ich möchte eine Textdatei in einzelne Teile aufdröseln und in einzelne Variablen ziehen. Die Textdatei beinhaltet die Ausgabe verschiedener Befehlsausgaben, als Trenner steht nach jedem Befehl ist eine Reihe _. Die Befehle sind im Array @cmds und sind somit der anfangstrenner.
Momentan kann ich die Teilbereich in eigene Textdateien speichern und könnte sie auch aus diesen Dateien wieder in Variablen einlesen, aber ich bin mir sicher, dass es einen besseren Weg gibt.
Mein Code:
for (my $ii = 0; $ii <= $i; $ii++) {
open (GREP, "<", "$fileone") or die;
open (OUT_ONE, ">", "/home/script/Owndif/Out-One_$ii.txt") or die;
while (<GREP>) {
print OUT_ONE if (/$cmds[$ii]/ .. /______________________________________________________________________________________________/);
}
close OUT_ONE;
close GREP;
}
Mein Kernproblem ist das Unverständnis der Bereichsoperatoren / .. / bzw. / ... / und die Ergebnisse dieser, bzw die Verarbeitung selbiger.
Vermutlich wird die Lösung trivial sein, aber wie bereits geschrieben momentan stehe ich einfach auf dem Schlauch.
Ich bedanke mich schon mal im voraus. :-)
DirkS
User since
2003-08-04
14371
Artikel
ModeratorIn
Statt dem
print OUT...-Befehl einfach an eine Variable hängen?
$var .= $_ if /../ .. /../
$var muss dann natürlich vor der
for-Schleife deklariert werden.
Hallo renee,
neuer Ansatz *g* Ich hatte immer versucht, hinter dem if in der geschweiften Klammer die Varibale zu befüllen.
Wie ich es jetzt aber sehe, wird bei deinem Ansatz jeder Befehl und seine Ausgabe in ein und dieselbe Variable geschrieben, was in Endeffekt die Ursprüngliche Datei wieder herstellt, aber ich werde mal ein wenig mit diesem Ansatz rumspielen, dabei lernt man am meisten. ;-)
Der erste Versuch, statt deinem Skalar einen Array mit der hochzählenden Befehlsindexvariable $ii zu nehmen ( $out_two[$ii] .= .... ) schlug schon mal fehl.
Danke für deine Antwort DirkS
User since
2003-08-04
14371
Artikel
ModeratorIn
Die '..' in den '/../' musst Du natürlich durch Deine Anfangs- und End-Bedingung ersetzen!
Hallo renee,
die Bedingung hatte ich ersetzt, aber dennoch Tomaten auf den Augen. habe die $_ übersehen. Deine Antwort ist also die Lösung. Danke!
DirkS