Hmmm. I would say both $! and the filename are very important to include in the error message, if only because malforming the filename in some way is an extremely common problem and can occur in many ways.

What is especially insiduous and hard to track, is when a file exists with the malformed name. Now that is a real pain in the butt.

Here are some common ways of malforming filenames:

1 - path missing. This often occurs when using the result directly from readdir or File::Find::find without adding the path.

2 - linebreak in filename. This typically occurs when newbies capture the output of `ls` or `dir` instead of using readdir as they should and forget to chomp.

3 - Wrong case. Perl, like Unix, is case sensitive, but users raised on Windows and Mac systems tend to forget this.

4 - Concatenating a file name in the wrong way, for example:

my $path = '/usr/home/jones'; my $file = 'foo.txt'; my $filename = $path . $file.
This will result in the nonexistent filename /usr/home/jonesfoo.txt, but is hard to catch.

5 - Using unescaped backslashes on Windows (extremely common). Filenames like "C:\terry\new.html" are a common source of Windows/Perl nightmares (Perl reads it as "C: TAB erry NEWLINE ew.html"). Use ordinary slashes under Windows and save yourself endless hassle as well as making your code more portable as a side effect.

I hope this helps someone.

Regards,
Helgi Briem


In reply to Re: Re: Re: Moving Log files remotely by helgi
in thread Moving Log files remotely 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.