Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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


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.

Replies are listed 'Best First'.
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 (Chancellor) 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?

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (9)
As of 2016-10-25 16:10 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (323 votes). Check out past polls.