in reply to Re^2: Scoping question - will file handle be closed?
in thread Scoping question - will file handle be closed?
Filehandles are global, irrespective of the scope in which they are referenced. To say the filehandle closes when the reference count reaches zero is incorrect.
oh well, I can't retract what I know to be true!
No, because that would involve learning something?
use strict; use warnings; if (1) { local *FH; my $fh = \*FH; open $fh, 'ls /usr |'; } $_ = <FH>; warn $_; __END__ ls: write error readline() on unopened filehandle FH at - line 10. Use of uninitialized value $_ in warn at - line 12. Warning: something's wrong at - line 12.
Or, simpler demonstration:
use strict; use warnings; { open my $fh, 'ls /usr |'; } warn "End\n"; __END__ ls: write error End
Note how bin/ls complains before the script exits because my $fh is closed when the scope is left, before warn is called.
- tye
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Scoping question - will file handle be closed? ("global")
by anonymized user 468275 (Curate) on Jul 28, 2015 at 09:13 UTC | |
by tye (Sage) on Jul 28, 2015 at 13:59 UTC | |
by anonymized user 468275 (Curate) on Jul 29, 2015 at 10:32 UTC | |
by Corion (Patriarch) on Jul 29, 2015 at 10:46 UTC | |
by tye (Sage) on Jul 29, 2015 at 14:27 UTC | |
by tye (Sage) on Jul 29, 2015 at 13:58 UTC |