#!/usr/local/bin/perl -w
use Net::FTP;
$hostname = 'remotehost.com';
$username = 'anonymous';
$password = 'myname@mydomain.com';
# Hardcode the directory and filename to get
$home = '/pub';
$filename = 'TESTFILE';
# Open the connection to the host
$ftp = Net::FTP->new($hostname); # Construct object
$ftp->login($username, $password); # Log in
$ftp->cwd($home),"\n"; # Change directory
print $ftp->ls($home),"\n";
# Now get the file and leave
$ftp->get($filename);
$ftp->quit;
FTP clients have also been integrated with most World Wide Web
browsers, using ftp:// in place of http://. When the URL points to a directory,
the browser displays a listing of the directory, in which each
filename is a link to that file. When the URL points directly to a
file, the remote file is downloaded.
Here's an example that uses Net::FTP to list files
from a remote FTP server on a web page, with a link from each file to
the URL of the file on the remote site:
#!/usr/local/bin/perl -w
use Net::FTP;
$hostname = 'remotehost.com'; # FTP host
$username = 'anonymous'; # Username
$password = 'myname@mydomain.com'; # Password
$home = '/pub';
$ftp = Net::FTP->new($hostname); # Net::FTP constructor
$ftp->login($username, $password); # Log in w/username and password
$pwd = $ftp->pwd; # Get current directory
print <<HTML; # Output HTML page
Content-type: text/html
<HTML>
<HEAD>
<TITLE>Download Files</TITLE>
</HEAD>
<BODY>
<B>Current working directory:</B> $pwd<BR>
Files to download: <P>
HTML
@entries = $ftp->ls($home); # Slurp all entries into an array
foreach (@entries) { # Output links for all files in the ftp area
# as links
print "<INPUT TYPE=hidden NAME=\"files\" VALUE=\"$_\">\n";
print "<A HREF=\"ftp://$hostname$_\">",
"<IMG SRC=\"http://www/icons/f.gif\" border=0>\n";
print " $_</A><BR>\n";
}
print <<HTML;
</BODY>
</HTML>
HTML
$ftp->quit; # end FTP session
The Net::FTP module implements a subset (as shown earlier in this
chapter) of the FTP protocol as defined in RFC 959. In addition to
providing the methods shown below, the module inherits from Net::Cmd.
Some of the Net::FTP methods return an object derived from the
dataconn class (which is in turn derived from
the IO::Socket::INET class), as noted in the entries for those
methods.
The following methods are defined by Net::FTP.