elsif ($^O eq "Linux") { eval { require Term::ANSIColor; }; }
is useless. You're using the functions from Term::ANSIScreen instead of those from Term::ANSIColor. Term::ANSIColor is a subset of Term::ANSIScreen, not the non-Windows equivalent of Win32::Console::ANSI.
Furthermore, you can simplify your program using the if pragma:
# Load ANSI driver if running in Windows. use if $^O eq 'MSWin32', 'Win32::Console::ANSI'; use Term::ANSIScreen qw/:color :cursor :screen :keyboard/; ...
Using the simpler code shouldn't fix anything, but since it will load Win32::Console::ANSI at compile time as if you had said use Win32::Console::ANSI;, it might.
Update: Added missing quotes as per reply.
In reply to Re^3: Weird screen output in my AceShell module
by ikegami
in thread Weird screen output in my AceShell module
by Ace128
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |