Thread Reguläre Ausdrücke auf Textdatei anwenden (5 answers)
Opened by Phobeus at 2004-06-26 21:53

coax
 2004-06-26 22:49
#83751 #83751
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=Phobeus,26.06.2004, 20:19]Ich bin fast schockiert, dass es dafür keine Kurzschreibweise gibt, die einen den Einsatz einer Schleife erspart ;) Danke für die schnelle Hilfe![/quote]
Es ist schon moeglich die RegExp einmal auf die gesamte Datei anzuwenden, dabei wird aber auch die gesamte Datei in den Speicher geladen.

Code: (dl )
1
2
3
4
5
{
 local $/;
 my $file_content = <DATA>;
 $file_content =~ s/Text/Ersetzen/;
}

hier bei wird $/ auf undef (undefiniert) gesetzt, was bewirkt das von nun an die Datei in einen Stueck eingelesen wird. Die geschweiften Klammern bilden einen Block, der Block und das local sorgen dafuer, dass $/ nur innerhalb dieses Blocks auf undef gesetzt ist. Auszerhalb des Blocks besitzt $/ weiterhin ihren originalen Wert, der \n ist.

In etwa das gleiche Ergebnis laesst sich mit join erzeugen
Code: (dl )
my $file_content = join '', <DATA>;


Wenn du jedoch wie bei dir im Beispiel nur einzelne Buchstaben ersetzt ist die Verwendung der Schleife vorzuziehen, da der Speicher nicht so stark belastet wird.
Die ganze Datei muesste man zum Beispiel dann einlesen, wenn ein String der in mehrere Zeilen verteilt ist als Ganzes gebraucht wird.

Grusz Christian.\n\n

<!--EDIT|coax|1088276886-->
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread Reguläre Ausdrücke auf Textdatei anwenden