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;