in reply to nonblocking read with ncurses

I have no idea about curses, but would it maybe be possible to stop the timeout (or set it real high) and do something like:
while(1) { my $chr = getch(); if($chr ne "\n") { push(@someary, $chr); } else { print "\n" last; } }
I'm not sure if this would help you at all, and I haven't tested that code, so take it with a grain of salt.