Thanks everyone for the quick replies, the solution came from Ted Ashton. Seems '$ftp->pasv;' only tells the remote system that FTP is being set to Passive Mode. The solution is to tell the HP3000 it also needs to use passive FTP by including 'Passive=>1' in the call to Net::FTP, see working sample below: #!/PERL/PUB/perl use Net::FTP; $host = "xxxxxxx"; $user = "xxxxxx\@xxx.xxxx-xxx.com"; $pw = "password_remote_server"; $ftp = Net::FTP->new("$host", Debug=>1,Passive=>1); $ftp->login($user, $pw); $ftp->binary; $ftp->put("/path/filename"); $ftp->quit;