@Renee: An deinen Beispielen stoert mich etwas, dass immer die Datei komplett in den Speicher gelesen wird. Ich habe teilweise mit Logdateien >100 MB zu tun, da wuerde Perl so leicht die Graetsche machen.
Ich schreibe Skripte auch lieber so, dass sie ihr Argument auf der Kommandozeile erhalten und nicht fest kodiert, und Ausgaben werden auf STDOUT geschrieben. So laesst sich das Programm sowohl mit Eingabe- und Ausgabedatei aufrufen (
meinprogramm eingabe.dat > ausgabe.dat) als auch in einer Pipe (
irgendeinprogramm | meinprogramm | weiteresprogramm). Aber ich bin eben auch Kommandozeilen-User ...
Hier mein Vorschlag:
#!/usr/bin/perl
use strict;
use warnings;
$/ = "\n[";
while (<>) {
next unless /is Changed to/;
chomp;
s/\s*\n\s*/; /g;
s/^\[?/[/;
print $_, "\n";
}