In the default state as soon as you've read something from STDIN, a loop doing a $sel->can_read() will always say it can read something from STDIN, even if you don't type anything more.
Example:
$sel = IO::Select->new();
$sel->add(\*STDIN);
while(1)
{
print "waiting to read:\n";
my @handles = $sel->can_read();
print "can read\n";
foreach $h (@handles)
{
if($h == \*STDIN)
{
my $line = <STDIN>;
my $finish = do_something_with_line($line);
}
}
if($finish) {last;}
}
This will at first wait until you type something, and after that scroll with 'waiting to read' 'can read', even if you don't type anything more.
(I've got a sneaky feeling it also 'can read' from STDIN as soon as you output something to STDOUT, as well.)
If you take out the two 'print' lines the code still works as expected however, (i.e. it only calls do_something_with_line when it has a whole line including a newline from STDIN)
C.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.