use POSIX (':termios_h'); my $char = ''; my $line = ''; my $fd_stdin = fileno STDIN; my $term = new POSIX::Termios or die "new POSIX::Termios failed."; $term->getattr ($fd_stdin); my $mode = $term->getlflag (); $term->setlflag ($mode & ~(ECHO() | ECHOK() | ICANON())); $term->setcc (VTIME(), 1); $term->setattr ($fd_stdin, TCSANOW()); while ($char !~ /[\r\n]/) { $line .= $char; sysread STDIN, $char, 1; } $term->setlflag ($mode); $term->setcc (VTIME(), 0); $term->setattr ($fd_stdin, TCSANOW()); print $line, "\n"; print join (", ", map (ord, split (//, $line))), "\n";