• ベストアンサー

ファイルの作成時刻と更新時刻

open(OUT,">>$file"); print OUT "$value\n"; close(OUT); で作成したファイルの $time_stamp_9 = localtime((stat("$file"))[9]); $time_stamp_10 = localtime((stat("$file"))[10]); で取得したとき常に同じ値になるのですが、追加書き込みでもその様になるのでしょうか?よろしくお願い致します。 #(stat($file))[9];#最終更新時刻 #(stat($file))[10];#作成時刻

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

unix/linuxではファイルの作成時刻というのは記録されないのでわかりません。#2の方がお書きのように、statの10番目はunix/linuxではctimeで、これはそのファイルに対して何らかの変更が加わった時刻です。 ファイル内容に変更や追加があれば、mtime(9番目)とctime(10番目)が変わります。ファイル属性(書込み禁止とか)やファイルオーナーを変更するとctimeだけが変わります。 ctimeは差分バックアップの時に使われます。前回バックアップした時刻より新しいctimeのファイルが差分バックアップ対象になります。

kapran
質問者

お礼

有り難う御座いました。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>二度目以降は更新ということにならないのしょうか? システムによるのかもしれません

kapran
質問者

お礼

有り難う御座いました。

回答No.2

stat で得られる 9 番目の値は mtime で、10番目の値は ctime ですが、この ctime については移植性がありません。詳しくは perldoc stat で見て下さい。

kapran
質問者

補足

有り難う御座います。参照しただけだと思うのですが。。。 > 詳しくは perldoc stat で見て下さい。 たぶん英文なのでしょうね。(^_^;

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ウチの環境(winXP,ActivePerl5.8.7)で試したところでは、別になりました。 既に存在しているファイルに追加書き込みしているのではなく、 新しいファイルを追加書き込みで作成しているのではないですか?

kapran
質問者

補足

ご回答有り難う御座います。すいません。。。サーバにアップしたスクリプトでの事でした。サーバのPerlのバージョンはVer5.6の様です。 http://home.hi-ho.ne.jp/support/manual/web/restrictions.html > 新しいファイルを追加書き込みで作成しているのではないですか? その通りですが、二度目以降は更新ということにならないのしょうか? ちなみに、 open(OUT,">$file"); print OUT ""; close(OUT); open(OUT,">>$file"); print OUT "$value\n"; close(OUT); を一度走らせて、その後に前の部分を削除して、十分時間をおいて open(OUT,">>$file"); print OUT "$value\n"; close(OUT); を実行しても、同じ値でした。分かりにくいかも知れませんが。。。

関連するQ&A