Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Ignore STDIN during processing

by ariels (Curate)
on Jun 18, 2002 at 13:20 UTC ( #175351=note: print w/ replies, xml ) Need Help??


in reply to Ignore STDIN during processing

Here's A Way To Do It...

#!/usr/local/bin/perl -w use strict; use Fcntl; print "Enter some text to lose...\n"; sleep 4; print "Losing...\n"; fcntl(STDIN, F_SETFL, O_NONBLOCK) or die "Couldn't set STDIN to non-blocking I/O: $!\n"; my $buf; 1 while (sysread(STDIN, $buf, 4096)); print "Reading...\n"; fcntl(STDIN, F_SETFL, 0) or die "Couldn't set STDIN to blocking I/O: $!\n"; print scalar <STDIN>;

The code sleeps for 4 seconds, to let you type in some text. Then it loses that text, and reads in a line.

You might also need something more: the above code deals with whole lines, so any incomplete lines typed before the 4 seconds are up will be kept. To get rid of those, try this (on UNIX):

#!/usr/local/bin/perl -w use strict; use Fcntl; print "Enter some text to lose...\n"; sleep 4; print "Losing...\n"; system("/bin/stty raw"); die "stty failed\n" if $?; fcntl(STDIN, F_SETFL, O_NONBLOCK) or die "Couldn't set STDIN to non-blocking I/O: $!\n"; my $buf; print $buf while (sysread(STDIN, $buf, 4096)); print "Reading...\n"; system("/bin/stty cooked"); die "stty failed\n" if $?; fcntl(STDIN, F_SETFL, 0) or die "Couldn't set STDIN to blocking I/O: $!\n"; print scalar <STDIN>;

Have "fun" (for the UN*Xish definition of "fun")...


Comment on Re: Ignore STDIN during processing
Select or Download Code
Re: Re: Ignore STDIN during processing
by csotzing (Sexton) on Jun 18, 2002 at 13:50 UTC
    More Info--
    I need my perl to work on both Unix & Win... (I don't believe that Fcntl and Non-Blocking I/O work on Win) Is there a way to do this? ...or am I stuck to just implement the Fcntl for Unix, and to hell with the Win users?

    print(map(lc(chr),split(6,qw/99672682673683684689632658645641610607/)));

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2014-07-26 11:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (176 votes), past polls