サイドコンテンツ 【メイン】

推し:加藤安那

加藤安那 (ユメオイ少女)

Twitter: @_hana_celeb_

最新 15 件のエントリー

サイドコンテンツ 【サブ】

ブログ エントリー

  • ファイルが無ければ新規作成し、ファイルがあれば読み書きモードで開きたい (not 上書き)

    -
    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() を作っておく。

    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;
    }