Net::FTP from CPAN might come in handy. From the perldoc page (but with error checking added):
use Net::FTP;
$ftp = Net::FTP->new("some.host.name", Debug => 0)
or die "Can't FTP to some.host.name: $@\n";
$ftp->login("anonymous",'me@here.there')
or die "Anonymous access denied!\n";
$ftp->cwd("/pub")
or die "Can't chdir to remote /pub.\n";
$ftp->get("that.file");
or die "Can't fetch that.file.\n";
$ftp->quit;
Looks pretty easy.
Edit 2001-03-11 by tye to add error checking. tye is quite disappointed that Net::FTP does not give you access to the reasons for any failures other than of new().