Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re^2: <> oddity ?

by hdb (Monsignor)
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 (Sage) 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
Domain Nodelet?
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 studying the Monastery: (6)
As of 2023-03-27 07:31 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (63 votes). Check out past polls.