I suspect that code is followed by one or more I/O operations on that file, and you certainly don't want to attempt those operations if the file isn't open. So, while you can simply replace die with warn or print (or any other statement), what you probably want to do is simple exception handling.

Something like this ought to do:

use strict; use warnings; #always a good idea! #... some loop that sets $inputFile to the file path ... eval { # try to open the file, die and explain the problem on failure open my $INFILE, '<', $inputFile or die "Cannot read '$inputFile': +$!" #.. do I/O on $INFILE (e.g. <$INFILE>, [doc://sysread], etc.) ..# }; if ($@) { # this catches the message from any "die" in the eval{} block # the message will be in the scalar '$@'; print "!: Error while working on file-> $@" } #.. move on to the next file ..#

With this style of code, any operation inside the eval that causes a die (like an error while reading) will terminate only the eval block and set $@ to be the message from die. You can then handle this message appropriately and move on to the next file.

This is similar in spirit to Java's try{ } catch{} syntax.

<radiant.matrix>
A collection of thoughts and links from the minds of geeks
The Code that can be seen is not the true Code
I haven't found a problem yet that can't be solved by a well-placed trebuchet

In reply to Re: how to prevent open from dying by radiantmatrix
in thread how to prevent open from dying by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.