関数順 インデックス
目的別 インデックス

構文
 
 sysopen ファイル・ハンドル, ファイル名, MODE
 sysopen ファイル・ハンドル, ファイル名, MODE, パーミッション   
MODE O_RDONLY
読み取り専用
O_WRONLY
書き込み専用
O_RDWR
読み書き用
O_CREAT
ファイルが存在しない場合に作成する
O_EXCL
ファイルが存在する場合にエラーにする
O_APPEND
追記書き込み
O_TRUNC
上書き
O_NONBLOCK
非ブロック方式のアクセス

返り値
 
 ファイル・オープンに成功した場合に真

説明

  • ファイル名で指定されたファイルをオープンして,ファイル・ハンドルを結びつけます。
  • MODEでファイル・オープンのモードを指定します。Fcntlモジュールに上記MODEの値が定義されています。
  • パーミッションの省略時は0666になります。

使用例

ファイルdata.txtを読み取り専用でオープンする
#!/usr/bin/perl
use strict;
use warnings;
use Fcntl;

my $file = 'data.txt';

sysopen my $fh, $file, O_RDONLY or die "$!:$file";
while (my $line = <$fh>) {
  print $line;
}
close $fh;
ファイルmakedata.txtを上書きする。ファイルが存在しない場合は新規に作成する
#!/usr/bin/perl
use strict;
use warnings;
use Fcntl;

my $file = 'makedata.txt';

sysopen my $fh, $file, O_WRONLY|O_CREAT|O_TRUNC or die "$!:$file";
print $fh "create data.\n";
close $fh;
誰でも読み書き可能なファイルmakedata.txtを作成する
#!/usr/bin/perl
use strict;
use warnings;
use Fcntl;

my $file = 'makedata.txt';

my $mask = umask 0; # umaskを無効にする

sysopen my $fh, $file, O_WRONLY|O_CREAT|O_EXCL, 0666 or die "$!:$file";
print $fh "create data.\n";
close $fh;

umask $mask;
※パーミッションの指定はumask値の影響を受けるため,指定通りのパーミッションでファイルを作成する場合にはumask値を変更する必要があります。