プロが教える店舗&オフィスのセキュリティ対策術

## ファイルロック
sub file_lock{
# ロックファイルの時刻チェック
local($flag) = 0;
if(-M $lock_file > 0.01){
unlink($lock_file);
}
foreach(1..5){
unless(-f $lock_file){
if(open(TMP,">$lock_file")){
print TMP "file locking\n";
close(TMP);
$flag = 1;
last;
}
}
sleep(1);
}
if($flag == 0){
&error("データファイルを他のユーザーが使用中の為書き込みが出来ません。");
}
}

以上は、dataフォルダの中にtmpファイルを、あるユーザーが書き込み中に作って、
その処理が終わるまでは他のユーザーの書き込みが出来ないということで
概要はいいのでしょうか?

質問は、5行目の、 if(-M $lock_file > 0.01)の0.01についてです。
これは、0.01秒のことを言っておるのでしょうか?

以上のように殆どPerlを片言以下で理解しているド素人です。

0.01秒じゃ少ないので0.2にしたら問題があるでしょうか?
質問はチンプンカンプンでしょうか?

ド素人の私によろしくご教授お願い致します。

A 回答 (1件)

「-M ファイル名」は、「ファイルが修正されてからスクリプト開始時点までの日数」です。

0.01日というのは、14.4分ですね。
つまり、そのif文は、「ロックファイルが修正されてからスクリプト開始時点まで14.4分以上経ったか?」という意味です。

参考:http://perldoc.jp/func/-X
    • good
    • 0
この回答へのお礼

-Mはそんな意味があるのですね。
0.01日は14.4分なんですね。
なんだか本当にド素人の質問でした。
こんな私に教えていただいて本当にありがとうございました。

お礼日時:2015/08/22 06:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!