Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Testing for the existence of STDIN?

by wog (Curate)
on Jan 24, 2002 at 03:22 UTC ( #141064=note: print w/ replies, xml ) Need Help??


in reply to Testing for the existence of STDIN?

In addition to the code above, you could use the -t filetest operator to check if STDIN was opened to a terminal (and thus not a pipe, etc):

if (-t STDIN) { # we're running from a shell, without input being # piped to us. } else { # ... }
Or you could also try a non-blocking read of STDIN, which most directly answers your original question of seeing if there is any input waiting without blocking:
use IO::Handle; STDIN->blocking(0); # and try to read from it, like you would normally. my $line = <STDIN>; if (defined $line) { # we have input, read succeeded } else { # no input at the moment. }
(Note that this technique may give false negatives if pipes take some time to start writing data.)


Comment on Re: Testing for the existence of STDIN?
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (8)
As of 2015-07-07 06:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (87 votes), past polls