in reply to Moving files between FTP servers

Using filehandles in Net::FTP is simple.
open(FH, $local_file) || die "Cannot open $local_file: $!"; $ftp=put(\*FH, $remote_file) || die "Upload of $local_file to $remote_ +file failed\n"; close(FH) || die "Cannot close $local_file (?!?): $!";

Or you can do STDIN, which I find handy when gzipping a file across FTP in real time.
$ftp=put(\*STDIN, $remote_file) || die "Upload from STDIN to $remote_f +ile failed\n";

You can run it from command line like this:
cat /var/log/messages |gzip -9fc | ./mystdinftp.pl

-reid