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

UtilFaqSubForm edit

Titel Wie öffne ich sicher eine Datei?
Autor
Bereich FaqEinUndAusgabe
Tags
Topic revision: 2008-02-21, MartinKutter
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.