Hallo,
ich hab' da ein kleines Problem:
- ich will eine Textdatei mit perl öffnen, Daten reinschreiben, und wieder schließen. Das geht prima mit:
open (ID, ">$db_id_file_name_franz1") or &cgierr("error [...]");
if ($db_use_flock) {flock(ID, 2) or &cgierr("fehler [....]");}
print ID ("bla");
close ID;
}
- jetzt soll aber diese Datei vorher geöffnet werden, ihr Inhalt* ausgelesen werden, in eine Variable zwischen gespeichert werden, die Datei wieder geschlossen werden; der Wert der Variable soll dann in dem unter 1) genannten Schreibprozess in die gleiche Datei wieder geschrieben werden.
* Diese Variable (Inhalt der Datei) ist irgendeine Zahl zwischen 1 und X. Also z. B. 1, 5, 19, 35 etc.
Um diesen Inhalt zu lesen dachte ich mir:
read the current file value
$CurrNum = 0;
open (ID, ">$db_id_file_name_franz1") or &cgierr("error [...]");
seek (ID, 0, 0);
read (ID, $CurrNum, 1);
close ID;
Die so gelesene Variable $CurrNum soll dann um eins erhöht werden:
$CurrNum = $CurrNum+1;
- Allerdings gibt's da 'n Problem:
a) da ich nicht weiß ob der Dateiinhalt ein- oder zweistellig (oder dreistellig) ist, kann ich die Länge bei read() nicht fest vorgeben.
b) Es scheint so - auch wenn ich als Länge 1 verwende - dass nichts aus der Datei gelesen wird, weil immer der initialisierte Wert von $CurrNum im Schreibprozess in die Dateigeschrieben wird.
Kann mir da bitte jemand helfen ?
Danke
Michale