• ベストアンサー

Perl - ファイルのオープン

Perl でカウンタを作っているんですが、 mkdir($year, 0755) などをした後に、 open(F, "+< ./$year/$mon/$day.log") $count = <F> $count ++; print F $count; のようにしているのですが、カウンタファイルが新規作成されませんし、存在しても更新されません。 どうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

上記のソースは存在すれば値が更新されるはずです。 具体的にはお尻に"1"が延々とついていくはずです。 主に考えられる原因は以下の通りでしょう。 ・ディレクトリのパーミッションが間違っている (755だとオーナー以外書き込めない) ・ディレクトリが存在しない ($yearディレクトリ内に$monのディレクトリは事前にちゃんと作ってますか?) ・追記モード(+<)ではファイルの新規作成は出来ない (読み出し、追記を両方行い、さらに新規作成するためには"+>>"を使う。ただし適切にseekを行う必要がある) ファイルから数値を読み出す前と書き込む前に seek(F,0,0); を入れてファイルポインタのオフセットを先頭に戻してください。

sprintfalls
質問者

お礼

ありがとうございます。 おかけでできるようになりました。 (^ ^)

関連するQ&A