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}
In reply to Re: y/n input in a captive interface
by shmem
in thread y/n input in a captive interface
by apotheon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |