Net::SFTP::Foreign can also use plink (distributed with
PuTTY) as the SSH client in order to support password authentication and without requiring
Expect, though that alternative is not completely secure (the password is passed to plink on the command line and could be seen by other users logged on the local machine).
The Net::SSH2 backend as described by syphilis is usually the best option.