sysopen FILEHANDLE, FILENAME, MODE, [PERMS]
FILENAMEで指定された名前を持つファイルをオープンして、FILEHANDLEと結びつます。FILEHANDLEに式を与えられた場合、その値をファイルハンドルの名前(またはファイルハンドルへのリファレンス)として扱います。この関数呼び出しはシステムのopen関数をFILENAME、MODE、PERMSの引数で呼び出すことを基礎としています。
MODEパラメータに使用できる値は、システム依存で、Fcntlライブラリモジュールによって提供されます。一般的には0は呼び出し専用、1は書き込み専用、2は読み書き可能を表します。
FILENAMEで指定されたファイルが存在せず、sysopenがそれを作成した場合には、PERMSの値が新たに作成されるファイルのパーミッションとなります。PERMSのデフォルト値は 0666で、全員に読み書きが許可されます。
| MODEパラメータ | パラメータの意味 |
|---|---|
| O_RDONLY | 読み取り専用 |
| O_WRONLY | 書き込み専用 |
| O_RDWR | 読み書き用 |
| O_CREAT | ファイルが存在しないとき作成する |
| O_EXCL | ファイルが存在する場合はエラーにする |
| O_APPEND | ファイルの終わりに追加する |
| O_TRUNC | ファイルを上書きする |
| O_NONBLOCK | 非ブロック方式のアクセス |
ファイルを書き込み用にオープンしてから、必要に応じて新しいファイルを作成して、上書きする場合は次のように書きます。
sysopen( FH, $path, O_WRONLY|O_TRUNC|O_CREAT, 0600);