open/sysopen | ファイル有り | ファイル無し | ファイルサイズ |
open(my $fh, '+<', FILEPATH) | 読み書き | エラー | 維持 |
open(my $fh, '+>>', FILEPATH) | 読み書き | 新規作成 | 維持されるが書き込みは追記のみ |
open(my $fh, '+>', FILEPATH) | 読み書き | 新規作成 | 0 |
sysopen(my $fh, FILEPATH, O_WRONLY|O_CREAT) | 読み書き | 新規作成 | 維持 |
※ sysopen() で定数使うなら use Fctl すること。
sysopen() が万能そうに見えるが、PerlIO を通さないため
open(my $fh, '<:utf8', FILEPATH)
と言った事が出来ない。 ファイルから読み込んだ後に decode() する必要がある。
結局 sysopen() は使わず。
ファイルがあった場合にファイルの内容に影響が無いようにし、ファイルが無かった場合には新規作成すれば良いわけだから、'+<' で open() する前に '+>>' でファイルが無かった場合の新規作成をするようにした。
'+>>' で open() してもすぐに閉じる。 余計なことはしない。
後々また使いそうなので空ファイルを作成する関数 ftouch() を作っておく。