I concur with the esteemed poster above, if only because Net::SFTP::Foreign seems to have more troubleshooting capabilities.

Other than that, from glancing at the perldoc for Net::SFTP, it may be worth doing an $sftp->status after the open? Lastly, what sftp server software is used on the other side? From some summary googling it would look that some servers (Tectia amongst others) has problems with Net::SFTP.