ブログ エントリー
-
ファイルが無ければ新規作成し、ファイルがあれば読み書きモードで開きたい (not 上書き)
プログラム - 2016/11/11 01:40:20open/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() を作っておく。
sub ftouch{ my $file = shift; return if !$file; return if -d $file; return 1 if -e $file; if(open(my $fh, '>>', $file)){ close($fh); return 1; } return; } -
ファイルが無ければ新規作成し、ファイルがあれば読み書きモードで開きたい (not 上書き)
http://0pm.0am.jp/memo3/index.cgi?entry=20161111_014020

