Wie öffne ich sicher eine Datei?
Inhalt:
Problem
Ich will eine noch nicht existierende Datei zum Schreiben öffnen.
open? oder nicht open
open(my $fh , ">" , $file) ist zwar nicht ganz falsch - dummerweise wird damit aber eine existiernde Datei überschrieben.
-f $file || open(my $fh , ">" , $file) hilft nicht - zwischen
-f und
open können andere Operationen ausgeführt werden.
Die einzige sicheren Varianten sind
sysopen oder
IO::File mit
Fcntl - flags:
my $fh = IO::File->new($file, O_CREAT | O_EXCL | O_WRONLY); erzeugt eine Datei (O_CREAT), die noch nicht existieren darf (O_EXCL) zum schreiben (O_WRONLY).
Mit sysopen geht's auch.
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff
--
MartinKutter - 21 Feb 2008