use Net::SSH2; use Net::SFTP::Foreign; my $ssh2 = Net::SSH2->new( timeout => '30000' ); $ssh2->connect( $host, $port ) $ssh2->auth( username => $user, password => $pass ) my $sftp = Net::SFTP::Foreign->new( ssh2 => $ssh2, backend => 'Net_SSH2', timeout => '30' ); $sftp->put( "$file", "$destfile", best_effort => 1, atomic => $atomic ) or ( warn( "Put failed: $sftp->error\n" ) && exit 1 );