Jens Irrgang: / Perl - Datei lesen und schreiben tut nicht wie es soll.

Beitrag lesen

Hallo, und guten Morgen.

Ich habe ein kleines Problem mit einem Script, welches nicht so tut wie ich es will. Konkret - ich will eine Zahl auslesen und wieder zurück schreiben, in einem Arbeitsgang - also mit einem geöffneten Dateihandle.

Der Code soweit:
<pre>
sub get_number {
   open(NUMBER,"+<$basedir/$datafile");
   flock(NUMBER, 2);
   $num = <NUMBER>;
   if ($num == 999999 || $num !~ /^\d+$/)  {
      $num = "10000";
   }
   else {
      $num++;
   }
   print NUMBER $num;
   flock(NUMBER, 8);
   close(NUMBER);
}
</pre>

Laut dem Perl-Kochbuch von O'Reilly bewirkt das +< ein öffnen zum Lesen und aktualisieren. In meinem Fall wird aber die neue Nummer nagehängt, nicht der alte Wert überschrieben. Ist das jetzt ein Problem oder habe ich da nur was falsch interpretiert?

Aus Gründen der Sicherheit (für das Script und die daraus resultierenden Dateien) sollte das alles in einem Schritt erledigt werden, damit die Nummer nicht von einer anderen Instanz erneut ausgelesen wird und somit es zu Fehlern kommt.

Jens