ファイルを開く方法をより適切に制御するために、sysopen() 関数を使用できます:
useFcntl;
sysopen(FH,$filename,O_RDWR|O_CREAT,0666)
ordie"Can'topen$filenameforread/writing /creating :$!";
関数 sysopen() は 4 つのパラメーターを取ります。最初のパラメーターは、open() 関数に似たファイル ハンドル パラメーターです。2 番目のパラメーターは、モード情報のないファイル名です。3 番目のパラメーターはモードです。パラメータは、Fcntl モジュールによって提供される論理 OR 演算と結合された定数で構成されます。4 番目のパラメータ (オプション) は、8 進数の属性値です (0666 はデータ ファイルを表し、0777 はプログラムを表します)。 sysopen() は、ファイルを開くことができる場合は true を返し、ファイルを開くことができない場合は false を返します。
open() 関数とは異なり、sysopen() はモード記述の省略形を提供しませんが、いくつかの定数を組み合わせます。さらに、各モード定数は独自の意味を持ち、論理 OR 演算を通じてのみ組み合わせることができます。複数の動作の組み合わせを設定します。
O_RDONLY読み取り専用
O_WRONLY書き込み専用
O_RDWR読み取りと書き込み
O_APPENDファイルの末尾に書き込みます
O_TRUNCTファイルが存在する場合は切り捨てます
O_CREATファイルが存在しない場合はファイルを作成します
O_EXCLErrorifthefilealreadyexisted(usedwithO_CREAT)
注意が必要な場合には sysopen() 関数を使用してください。ファイルにコンテンツを追加する場合は、新しいファイルを作成せずに、次のように記述できます:
sysopen(LOG,"/var/log/myPROg.log",O_APPEND,0666)
ordie"Can' toopen/var/log/myprog.logforappending:$!";
上記は Perl の古典的な使用法です。Sysopen() を使用してさらに制御します。その他の関連記事については、PHP 中国語 Web サイトに注目してください。 (www.php.cn)!