Being an FTP Client
Problem
You want to connect to an FTP server and get or put files. You might want to automate the one-time transfer of many files or automatically mirror an entire section of an FTP server, for example.
Solution
Use the CPAN module Net::FTP:
use Net::FTP; $ftp = Net::FTP->new("ftp.host.com") or die "Can't connect: $@\n"; $ftp->login($username, $password) or die "Couldn't login\n"; $ftp->cwd($directory) or die "Couldn't change directory\n"; $ftp->get($filename) or die "Couldn't get $filename\n"; $ftp->put($filename) or die "Couldn't put $filename\n";
Discussion
Using the Net::FTP module is a three-part process:
connect to a server, identify and
authenticate yourself, and
transfer files. All interaction with the FTP
server happens through method calls on a Net::FTP object. If an error
occurs, methods return undef
in scalar context or
an empty list in list context.
The connection is established with the new
constructor. If an error occurs, $@
is set to an
error message and new
returns
undef
. The first argument is the hostname of the
FTP server and is optionally followed by named options:
$ftp = Net::FTP->new("ftp.host.com", Timeout => 30, Debug => 1) or die "Can't connect: $@\n";
The Timeout
option gives the number of seconds all
operations wait before giving up. Debug
sets the
debugging level (non-zero sends copies of all commands to STDERR).
Firewall
takes a string as an argument, specifying
the machine acting as an FTP proxy. Port
lets you specify an alternate ...
Get Perl Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.