One thing you can do, quite easily, is have your program print comments about what it's doing (right before calling $ssh->capture2() or whatever), and of course it can print any captured output or error string afterward, so your output can look something like this:
Connecting to remotehost...
Connected. Attempting to log in...
Logged in.
Sending command: cd /var/foo/wibble
Command succeeded. No output.
Sending command: cd -
Command succeeded. Output:
/home/jonadab
Sending command: cd /directory-that-does-not-exist
Command FAILED. Error information:
cd: /directory-that-does-not-exist: No such file or directory
If you want to get fancy, you could even use Term::ANSIColor and display different things in different colors (e.g., output in green, errors in bright magenta, comments in white, and commands in bright yellow, all on a black background; or whatever colors make you happy).