in reply to y/n input in a captive interface
The problem you have is the line discipline of the terminal. To read a single char from it, you must set it into cbreak mode.
With the perl core, you can do that only with POSIX. With system utilities, use stty (afaik there's no UNIX or UNIX like or Linux out there which doesn't have that basic utility). After having set your terminal with either method, it's just sysread:
For the same with POSIX see johngg's answer. POSIX::Termios is in $Config::Config{installarchlib}/auto/POSIX.so, so it is available with every *nix perl.#!/usr/bin/perl system 'stty','cbreak' and die; sysread STDIN,$a,1,0; print "\n",$a =~ /y/ ? "yup\n" : "nope\n"; system 'stty','-cbreak' and die;
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: y/n input in a captive interface
by apotheon (Deacon) on Feb 08, 2007 at 17:56 UTC | |
by shmem (Chancellor) on Feb 08, 2007 at 18:57 UTC |