Um besser zu steuern, wie Dateien geöffnet werden, können Sie die Funktion sysopen() verwenden:
useFcntl;
sysopen(FH,$filename,O_RDWR|O_CREAT,0666)
ordie"Can'topen$filenameforreading/writing/creating:$!";
Die Funktion sysopen() benötigt vier Parameter, ähnlich wie open(). Der zweite Parameter ist der Dateiname ohne Modusinformationen. Der dritte Parameter ist der Modusparameter, der aus Konstanten besteht, die mit der vom Fcntl-Modul bereitgestellten logischen ODER-Operation kombiniert werden. 0666 bezeichnet die Datendatei, 0777 bezeichnet das Programm. sysopen() gibt true zurück, wenn die Datei geöffnet werden kann, false, wenn das Öffnen der Datei fehlschlägt.
Im Gegensatz zur Funktion open() stellt sysopen() keine Abkürzung für die Modusbeschreibung bereit, sondern kombiniert einige Konstanten. Darüber hinaus hat jede Moduskonstante eine eindeutige Bedeutung und kann nur durch logische ODER-Operationen kombiniert werden. Kombiniert können Sie mehrere Verhaltenskombinationen einrichten.
O_RDONLYSchreibgeschützt
O_WRONLYSchreibgeschützt
O_RDWRLesen und Schreiben
O_APPENDSchreibt an das Ende der Datei
O_TRUNCTruncatethefileifexisted
O_CR EATErstellen Sie die Datei, wenn sie nicht vorhanden war
O_EXCLErrorifthefilealreadyexisted(usedwithO_CREAT)
Verwenden Sie die Funktion sysopen(), wenn Sie vorsichtig sein müssen. Wenn Sie beispielsweise vorhaben, Inhalt zu einer Datei hinzuzufügen, erstellen Sie keine neue Datei, wenn dies nicht der Fall ist existieren, Sie können so schreiben:
sysopen(LOG,"/var/log/myPRog.log",O_APPEND,0666)
ordie"Can'topen/var/log/myprog .logforappending: $!";
Das Obige ist die klassische Verwendung von Perl: Verwendung von Sysopen() für mehr Kontrolle. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn). !