Passive mode ftp still uses a second connection for data, just the direction of
the connection differs.
In normal 'active' ftp, the client connect to remote port 21 for control, and data
connections come back from the server with a source port of 20 and destination
port > 1024. In 'passive' ftp, the client still connect to remote port 21 for control,
however data connections originate _from_ the client on a port > 1024 to the
remote server on a port > 1024, thus passing through firewalls that only allow
outgoing connections.
Then, of course, is the issue of binary mode encoding, translating between
formats, etc... Much easier to use Net::FTP, unless you have a week or so
to kill on a 15 minute job. ;-)