Try setting the ftp to PASSIVE mode after connecting. You can set it during the connection initiation string if you would like by using it as an %option (read the Net::FTP documentation for specifics).
$ftp->pasv;
Here is a reasonable explanation of the difference between
Active and Passive ftp and what is happening that might require a PASV connection.
"The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it." - Terry Pratchett