Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

stat : error handling

by gepebril69 (Beadle)
on Jan 03, 2013 at 13:24 UTC ( #1011449=perlquestion: print w/ replies, xml ) Need Help??
gepebril69 has asked for the wisdom of the Perl Monks concerning the following question:

I want to use the function stat to determine the last modified date of a file. This can be done by

$FileTimeLastMod = (stat ($FileName))[9];

But how to detect if something in this function call fails? There is a brief description on the manual page of Perl, but I can't figure out what they mean. English is not my native tongue:

Returns a 13-element list giving the status info for a file, either the file opened via FILEHANDLE or DIRHANDLE, or named by EXPR. If EXPR is omitted, it stats $_ (not _ !). Returns the empty list if stat fails.

What is the code I have to use? Thanks in advance

Comment on stat : error handling
Download Code
Re: stat : error handling
by toolic (Bishop) on Jan 03, 2013 at 13:38 UTC
    Try something like this:
    use warnings; use strict; my @stats = stat 'foo'; if (@stats) { print "OK\n"; } else { print "Error\n"; }

    Also, use <blockquote> instead of quote.

      Thanks Toolic

      Have updated the quote to quoteblockquote And your code works! Excellent. I get it.

      Do you have any idea why perlmonks uses a textstyle website with 90's looks? I mean we don't need eyecandy, but maybe some styling would be nicer and more functional.

Re: stat : error handling
by johngg (Abbot) on Jan 03, 2013 at 14:03 UTC

    The o/s error is recorded in $!.

    $ perl -E ' > @stats = stat q{notThere} or die $!;' No such file or directory at -e line 2. $

    Cheers,

    JohnGG

      Thx Johngg

      I stick to the non-die solutions. They are not real handy in 24/7 operational systems.... ;)

        Well, you don’t need to use die to get information from $!:

        #! perl use Modern::Perl; for my $file ('465_SoPW.pl', 'Non-Existent.txt') { if (my @stats = stat $file) { say "File '$file' last modified: ", $stats[9]; } else { say "stat failed for file '$file': $!"; } }

        Output (on my machine):

        0:17 >perl 466_SoPW.pl File '465_SoPW.pl' last modified: 1357188675 stat failed for file 'Non-Existent.txt': No such file or directory 0:17 >

        Hope that helps,

        Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

        The solution was $! and, as Athanasius points out, die had nothing to do with it other than to illustrate that the variable is available ;-)

        Cheers,

        JohnGG

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1011449]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2015-07-07 00:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (85 votes), past polls