- ベストアンサー
ファイルの作成時刻と更新時刻
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];#作成時刻
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
unix/linuxではファイルの作成時刻というのは記録されないのでわかりません。#2の方がお書きのように、statの10番目はunix/linuxではctimeで、これはそのファイルに対して何らかの変更が加わった時刻です。 ファイル内容に変更や追加があれば、mtime(9番目)とctime(10番目)が変わります。ファイル属性(書込み禁止とか)やファイルオーナーを変更するとctimeだけが変わります。 ctimeは差分バックアップの時に使われます。前回バックアップした時刻より新しいctimeのファイルが差分バックアップ対象になります。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>二度目以降は更新ということにならないのしょうか? システムによるのかもしれません
お礼
有り難う御座いました。
- noboru2000
- ベストアンサー率33% (47/140)
stat で得られる 9 番目の値は mtime で、10番目の値は ctime ですが、この ctime については移植性がありません。詳しくは perldoc stat で見て下さい。
補足
有り難う御座います。参照しただけだと思うのですが。。。 > 詳しくは perldoc stat で見て下さい。 たぶん英文なのでしょうね。(^_^;
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ウチの環境(winXP,ActivePerl5.8.7)で試したところでは、別になりました。 既に存在しているファイルに追加書き込みしているのではなく、 新しいファイルを追加書き込みで作成しているのではないですか?
補足
ご回答有り難う御座います。すいません。。。サーバにアップしたスクリプトでの事でした。サーバの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); を実行しても、同じ値でした。分かりにくいかも知れませんが。。。
お礼
有り難う御座いました。