Hell-O!
Dort http://de.selfhtml.org/perl/funktionen/einausgabe.htm#open steht:
+>datei.dat bedeutet: Datei datei.dat zum Lesen und zum Schreiben von Daten öffnen.
Ich denke, dass da die http://perldoc.perl.org/functions/open.htmlPerldokumentation aussagekräftiger ist:
"If MODE is '>' , the file is truncated and opened for output, being created if necessary."
Und weiter:
"You can put a '+' in front of the '>' ... to indicate that you want both read and write access to the file ... the '+>' mode would clobber the file first."
Heißt im Klartext: Wenn du den Modus '>' verwendest, wird der Dateizeiger am Anfang der Datei positioniert. Sollte die Datei nicht existieren, wird sie angelegt. Verwendest du den Modus '+>', ist das Verhalten wie beschrieben, die Datei wird jedoch zuerst geleert.
ICH möcht eigentlich nur wissen, ob man mit +> einlesen kann, oder nicht.
Ja, aber eine leere Datei. Ergo ist dieser Modus für dein Vorhaben nicht geeignet. Du müsstest es mit dem Modus '+>>' und seek in Kombination mit truncate probieren:
# Datei zum anhängenden I/O öffnen
open FH, '+>>', $datei || die $!;
flock FH, LOCK_EX;
# Dateizeiger am Anfang positionieren
seek FH, 0, 0;
# Alte Daten auslesen
my $old_data = <FH>;
# wieder zurück zum Anfang
seek FH, 0, 0;
# Datei abschneiden
truncate FH, 0;
# neue Daten reinschreiben
print FH 'Some new data';
# zurück zum Anfang
seek FH, 0, 0;
# Einlesen der neuen Daten zur Kontrolle
my $new_data = <FH>;
close FH;
# Ausgabe:
print 'old data: ', $old_data, "\n";
print 'new data: ', $new_data, "\n";
Oder einfach zweimal öffnen, einmal zum Lesen und einmal zum Schreiben.
Siechfred
Ich bin strenggenommen auch nur interessierter Laie. (molily)
Kabelkuddelmuddel || Steuerfreie Geburtsbeihilfen? || RT 221 Erfurt-Altstadt i.V.