Hello hda,
LanX has answered your question, but I was somewhat surprised by the error message (which comes courtesy of use strict;, BTW), since it appears that $fh is already declared when the die code is parsed. Deparsing shows what’s going on: or is (apparently) rewritten as unless, which places the $fh in the die clause before its declaration in the call to open:
22:56 >perl -MO=Deparse -Mstrict -we "my $file = 'x'; open (my $fh, '< +', $file) or die qq[Can't open $fh];" Global symbol "$fh" requires explicit package name (did you forget to +declare "my $fh"?) at -e line 1. -e had compilation errors. BEGIN { $^W = 1; } use strict; my $file = 'x'; die "Can't open ${'fh'}" unless open my $fh, '<', $file; 22:56 >
Hope that’s of interest,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: open(), go away with bad way, or fail with the right way?
by Athanasius
in thread open(), go away with bad way, or fail with the right way?
by hda
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |