in reply to trying to get Net::SFTP::Foreign to work

Net::SFTP::Foreign->new() does not die on failure. You need to call the error method afterwards:
$sftp = Net::SFTP::Foreign->new("$user\@$host"); $sftp->error and die "unable to connect to remote host: " . $sftp->err +or;