in reply to Ascii value is different

Term::Screen calls stty raw -echo under the hood, which unsets the tty feature "translate carriage return to newline" (icrnl) — i.e. "raw" means (among other things) -icrnl.

Not sure if there are better ways... but a quick hack might be to patch Term::Screen to issue stty raw -echo icrnl instead, or maybe call stty icrnl yourself from your script after having used Term::Screen  (haven't tested it for side effects, though).

Your script with Term::Screen commented (just for demo):

$ stty -icrnl $ ./835470.pl Your name: a--97 b--98 --13ine got at 13 $ stty icrnl $ ./835470.pl Your name: a--97 b--98 Newline got at 10 --10