Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: <> oddity ?

by hdb (Prior)
on Mar 27, 2013 at 11:32 UTC ( #1025682=note: print w/ replies, xml ) Need Help??


in reply to Re: <> oddity ?
in thread <> oddity ?

This is well spotted! If I modify my example to include this extra <>:

while(<>) { print; } my $line = <>; print "END\n";

then only

perl stdin.pl stdin.pl

waits for more input, while the other two versions finished immediately. That is still strange...

UPDATE: I guess Perl will do unshift(@ARGV, '-') unless @ARGV; (copied from LanX above) and "re-open" STDIN because @ARGV was exhausted in the while loop already. When using pipes or redirections this logic will not be applied and <> will only return EOF or similar.


Comment on Re^2: <> oddity ?
Select or Download Code
Re^3: <> oddity ?
by pvaldes (Chaplain) on Mar 27, 2013 at 11:42 UTC

    It is explained in the post of Lanx

    In the first case the program is waiting for the user to type a value for the variable $line; in the second and third cases a default value is provided instead, $line = '-';

Re^3: <> oddity ?
by LanX (Canon) on Mar 27, 2013 at 11:44 UTC
    > That is still strange...

    Is it really?

    I mean what is this code actually supposed to do?

    Let's say it clearly: Reading from an exhausted filehandle is nonsense!

    Just the fact that this filehandle is magic leads to undefined behavior, because interactice input can't be exhausted.

    Using either STDIN or ARGV here to is not only better, it explicitly demonstrates the intention of this line.

    Cheers Rolf

    ( addicted to the Perl Programming Language)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2014-11-22 11:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (121 votes), past polls