Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: Do I need/want to close __DATA__?

by choroba (Cardinal)
on Apr 13, 2020 at 15:08 UTC ( [id://11115462]=note: print w/replies, xml ) Need Help??


in reply to Re: Do I need/want to close __DATA__?
in thread Do I need/want to close __DATA__?

It can be even shorter (but a bit more confusing) when using a name that's exempt from the "use only once" warning:
sub refresh { eof local *% }
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^3: Do I need/want to close __DATA__? (updated)
by haukex (Archbishop) on Apr 13, 2020 at 17:17 UTC

    Nice, I like it! ;-) This idiom (if I may call it that) is short enough that, IMHO, it doesn't even really need a sub and fits comfortably on a line with a comment explaining it:

    {do eof local *%} # reset Perl's internal "last accessed" filehandle
    

    (I had to put the do in there to get rid of a "Useless use of eof in void context"...) I find it funny that there are so many alternatives to *%, like ** and *! :-)

    ... but of course a sub is the more "best practice" solution here.

    Update: See replies.

      Putting do directly before eof is dangerous. When I try it, it warns:
      do "1" failed, '.' is no longer in @INC; did you mean do "./1"? at ./1.pl line 9.

      because I have a file named 1 in the current directory, and eof local *%; returns 1.

      map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
        do "1" failed, '.' is no longer in @INC

        Oops, you're right, do EXPR is certainly not what I meant to do, my mistake. I guess a sub probably is cleanest, though something like {my $x=eof local *!} still works.

        Minor edits.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (2)
As of 2024-04-26 03:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found