Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^3: <> oddity ?

by LanX (Canon)
on Mar 27, 2013 at 11:50 UTC ( #1025690=note: print w/ replies, xml ) Need Help??


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

> Why would this program then NOT wait for any further input via STDIN ?

Perl can't read your mind, if you want to read from STDIN, explicitly use STDIN instead of stretching DWIM magic behavior till it breaks.

UPDATE:

actually your example is reading from STDIN, but maybe you should stop the redirecting from file to STDIN if you wanna read from interactive input (keyboard).

see select

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re^3: <> oddity ?
Re^4: <> oddity ?
by Krambambuli (Deacon) on Mar 27, 2013 at 11:58 UTC
    OK, got it solved and understood now, thanks.

    I actually just want NOT to read from STDIN when there is a file given in the command line, and stop reading when that file is exhausted.

    Turns out that I should NOT any further $line = <> once that hit EOF, because the immediate next attempt to do so will just open STDIN.

    Ahaa... :)

    Thank you.
Re^4: <> oddity ?
by Krambambuli (Deacon) on Mar 27, 2013 at 12:18 UTC
    Just to clarify:

    wishing to deal with various use modes in a perfectly similar manner, I wanted to have 3 distinct modes of calling the program behaving absolutely similar, with minimum fuss about that in the code:

    $ test.pl sample.txt sample1.txt ... sampleN.txt
    $ test.pl <sample.txt
    $ cat sample.txt sample1.txt ... sampleN.txt | test.pl

    All is well with this with the use of <>, except the fact that once EOF is seen, no further attempt to read from <> is allowed - or STDIN is opened, and will wait forever if you're unaware of it...

    Thanks you helping to sort this out.

    UPDATE As perlop says in 'I/O Operators':

    The <> symbol will return "undef" for end-of-file only once. If you call it again after this, it will assume you are processing another @ARGV list, and if you haven't set @ARGV, will read input from STDIN.

    Now I know :)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2014-07-31 07:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (245 votes), past polls