Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: (tye)Re: Closing and re-opening the DATA Filehandle

by Adam (Vicar)
on Apr 05, 2001 at 01:21 UTC ( #69899=note: print w/ replies, xml ) Need Help??


in reply to (tye)Re: Closing and re-opening the DATA Filehandle
in thread Closing and re-opening the DATA Filehandle

Nope. That doesn't work either. I wrapped your code into a sub, so I could call it multiple times and got:

Testing(some data) at D:\test.pl line 5, <DATA> line 1. Testing at D:\test.pl line 13. Testing(some data) at D:\test.pl line 5, <DATA> line 1. Can't save DATA: Bad file descriptor
Here is test.pl:
sub Tye { my $pos= tell(DATA); chomp( my $x= <DATA> ); warn "Testing($x)"; { my $fh= do { local(*FH); \*FH }; open $fh, "<&DATA" or die "Can't save DATA: $!\n"; close DATA or warn "Can't close DATA: $!\n"; open DATA, "<&=".fileno($fh) or die "Can't restore DATA: $!\n"; seek DATA, $pos, 0 or die "Can't reposition DATA: $!\n"; } warn "Testing"; } Tye(); Tye(); __END__ some data


Comment on Re: (tye)Re: Closing and re-opening the DATA Filehandle
Select or Download Code
(tye)Re2: Closing and re-opening the DATA Filehandle
by tye (Cardinal) on Apr 05, 2001 at 18:37 UTC

    My mistake. I know this doesn't matter since you found a better solution but this bugged me and I found my mistake.

    I was thinking that the "=" in "<&=" was required when using a numeric file descriptor. But the "=" requests an fdopen() instead of a dup(), that is, the new file handle ends up sharing the same file descriptor with the old file handle. So when $fh is closed (triggered when it goes out of scope and gets destroyed), the file descriptor that DATA is using also gets closed out from under it.

    So just drop the "=" and my code works.

            - tye (but my friends call me "Tye")

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://69899]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (10)
As of 2014-08-21 21:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (143 votes), past polls