Term::Shell::Enhanced (T::S::E) lets you write commandline shell frameworks.
Term::Shell (T::S) is great, yet T::S::E tops it and adds more convenience features.
Compared to T::S it feels more like a real shell (builtin cd, pwd, echo, control of environment variables, history files).
Because of its features, T::S::E requires quite a lot modules. If this is an issue stick to T::S.
Whenever I have complex applications to maintain, I write a T::S::E shell.
A great extension of Fatal.pm. For private stuff I use it very frequently. I wish it would be part of the core modules.
At work all our redhat machines use cpan2rpm'ized packages. Unfortunately autodie overwrites Fatal.pm instead of making a fork, so I can't install it because it conflicts with the system perl. A patch rt.cpan.org/Ticket/Display.html?id=49608 is underway.