I suspect the error comes from IO::Pty when it attempts to allocate a pseudo terminal. The '-t' option will force allocation of a pseudo terminal, but this may not make any difference for you as your application appears to already be attempting to do so, and failing.

Net::OpenSSH uses IO::Pty to allocate a pseudo terminal and this, in turn, uses IO::Tty. The latter is documented to be system dependent. You might check the IO::Tty documentation to ensure the system you are on is listed as known working. In particular, if you are on Windows it says you must be using Cygwin. On the other hand, it says the list is out of date.

A pseudo terminal will be allocated if you are using password authentication. If you are using password authentication, even if you can get pseudo terminals to work, you might be better off to heed the warning in the Net::OpenSSH documentation:

Note that using password authentication in automated scripts is a very bad idea. When possible, you should use public key authentication instead.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other