Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: -M file test operator

by beable (Friar)
on Jul 29, 2004 at 00:40 UTC ( #378258=note: print w/replies, xml ) Need Help??

in reply to -M file test operator

Hello Baryuds, I wrote the following program to try to reproduce your problem, but I wasn't able to. I'd suggest you add a line like this to your program, so you can see just how big a number -M is returning:

print "minus M returns: ", (-M $logfile), "\n";

#!/usr/bin/perl use strict; use warnings; my $logfile = "file.log"; my $internal = 0; if ($internal) { # create a logfile open LOGFILE, ">$logfile" or die "can't open $logfile: $!"; print LOGFILE "This is a test\n"; close LOGFILE or die "can't close $logfile: $!"; } else { # create logfile externally system("./write-log"); } # sleep? sleep 3; print "minus M returns: ", (-M $logfile), "\n"; # test modification time if (-M $logfile > 0) { print "The logfile generated by 3rd party script is not new\n"; exit(1); } else { print "It's a new logfile! Hoooray!\n"; } __END__

Replies are listed 'Best First'.
Re^2: -M file test operator
by bayruds (Acolyte) on Jul 29, 2004 at 01:42 UTC
    Hi Beable I ran it a couple of times, These are the values I got: # Using $mtime = (-M $logfile); MTIME: 1.15740740740741e-05 MTIME: 0.000104166666666667 Thanks for your reply. bayruds

      Hi Bayruds, here is a program to find out how old the log file actually is. It turns out that we are talking about 1 to 9 seconds old. Is that too old for you? If that seems like a reasonable age, I'd suggest you change your "-M" test line to something like:

      # see if the file is more than about one hour old if (-M $logfile > 0.042) { ... }

      Here's the program. Somebody will probably produce a one-liner to do this now.

      #!/usr/bin/perl use strict; use warnings; my $secs_per_day = 60 * 60 * 24; while (my $line = <DATA>) { chomp $line; if ($line =~ m/MTIME:\s+(.*)/) { my $time = $1; my $secs = $time * $secs_per_day; print "$time days is $secs second(s)\n"; } } __END__ Output: 1.15740740740741e-05 days is 1 second(s) 0.000104166666666667 days is 9.00000000000003 second(s) __DATA__ MTIME: 1.15740740740741e-05 MTIME: 0.000104166666666667

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://378258]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (2)
As of 2023-03-25 14:28 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (63 votes). Check out past polls.