Wise monks!

I implore your wisdom to dispel the shadows inside me. This is possibly the silliest question a hermit can post, so I also implore your patience as well. Ever since 2005 I have successfully opened files using the following (sinful) way:

open FILE, ">", $file;

Knowing that evil's way is easy and broad, and after repenting for my sins, I solemnly promised the @perl_deities that as far it is possible and reasonable I will stick to Damian Conway's Perl Best Practices ... and now I find myself banging my head against a wall, trying to understand why this works:

open (my $fh, ">", $file);

(program works as expected)

but this doesn't:

open (my $fh, ">", $file) or die "Can't open $fh";

"Global symbol "$fh" requires explicit package name (did you forget to declare "my $fh"?) at test.pl line 91. Execution of test.pl aborted due to compilation errors."

I am using warnings and strict pragmata as usual. Using perl 5.28.0 in Linux.

Any hint will be appreciated!


In reply to open(), go away with bad way, or fail with the right way? by hda

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.