![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
for(;;){
$elapse = -M "test.txt";
print $elapse;
print "\n";
if($elapse >= 0.5){
unlink("test.txt");
exit;
}
sleep 1;
}
ファイルの最終更新からの経過時間を監視して、最終更新時間より12時間経過したら自動で削除するプログラムなのですが、常に同じ時間が表示されてしまいます。
何故、このような挙動になるのでしょうか?
また、どのようにすればスマートに経過時間を調べて削除できますか?
No.1ベストアンサー
- 回答日時:
Perlで疑問があるときは、まずは perldoc を調べてみましょう。
https://perldoc.jp/func/-X
> -M 「スクリプト実行開始時刻から」 ファイル修正時刻を引いたもの(日単位)。
(強調は回答者によるもの)
そのスクリプトでは、実行開始のあと、終了せずにループで繰り返しているので、「スクリプト実行開始時刻」は変化しません。
よって、$elapse が変化するのは、ファイルtest.txtが変化したときだけだし、そのときには >=0.5にはなりません。
https://perldoc.jp/func/stat
でファイル情報を取得し、
https://perldoc.jp/func/time
で得た現在の秒数と比較する、というあたりでしょう。
CPANで探せば、現在からの時間を求められるモジュールがあるかもしれません。
ありがとうございます!!!
調べ方も押してくださりありがとうございます。
次回はperldocで検索して質問しようと思います。
とても助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(プログラミング・Web制作) どうしてもエラーが解決できません。 1 2022/07/23 04:32
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Excel(エクセル) <スプレッドシート>IF関数の複数条件について 5 2022/10/27 14:38
- 音楽配信 アップルミュージックの無料期間を過ぎてサブスクリプションで解除しなかったら自動更新になるのですか?そ 2 2022/12/09 20:32
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- Excel(エクセル) Excelについて画像のように実働時間を入力したら、 下限時間より少ないまたは上限時間より多い場合、 2 2023/08/08 23:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 複数ファイル...
-
テキストファイルで提出とは?
-
エクセルの各セルの内容をそれ...
-
多数のサブディレクトリ内のフ...
-
テキスト(txt)→ワード(docx)へ...
-
renameコマンドについて
-
フォルダ名をファイル名の頭に...
-
拡張子を元に戻す
-
バッチ処理でファイルの中身を...
-
COPYコマンドで結合すると余計...
-
ハードディスク上書き用大容量...
-
EXCEl/VBAで拡張子なしのファイ...
-
VBAでワークシートを引数として...
-
psqlでエラーログをとりたい
-
バッチファイルで文字列削除に...
-
unlinkで削除されないのは?
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
binファイルを解凍したいの...
-
Thunderbirdで社内共有フォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
psqlでエラーログをとりたい
-
テキストファイルで提出とは?
-
forfilesで検索したファイルを...
-
VBAでエクセルをtxtに変換する...
-
テキスト(txt)→ワード(docx)へ...
-
UWSCでテキストファイルを開い...
-
バッチファイルで文字列削除に...
-
wikiでローカルファイルのリン...
-
ExcelVBA テキストファイルUNIC...
-
コマンドプロンプトで指定した...
おすすめ情報
2行目を
my $elapse = (time - (stat "shina20190904.csv")[9]) /3600/24;
に差し替えると思った動作になりました。
-Mではなぜ失敗するのでしょうか?
訂正 shina20190904.csv → test.txt