in reply to open(), go away with bad way, or fail with the right way?
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, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: open(), go away with bad way, or fail with the right way?
by Anonymous Monk on May 31, 2019 at 14:43 UTC | |
by karlgoethebier (Abbot) on Jun 01, 2019 at 17:40 UTC | |
by Anonymous Monk on Jun 01, 2019 at 18:00 UTC | |
by karlgoethebier (Abbot) on Jun 01, 2019 at 18:15 UTC | |
by Anonymous Monk on Jun 01, 2019 at 20:16 UTC | |
| |
by Anonymous Monk on May 31, 2019 at 21:38 UTC | |
|
Re^2: open(), go away with bad way, or fail with the right way?
by BillKSmith (Monsignor) on May 31, 2019 at 13:40 UTC |