#!/usr/bin/perl -w use strict; use Net::FTP; use Fcntl qw(O_WRONLY O_RDONLY O_APPEND O_CREAT O_TRUNC); my $dns = 'ftp.squarepants.com'; my $user = 'SpongeBob'; my $passwd = '3xtr&Dry'; my $dir = 'under/pacifiq/ocean/'; my $ftp = Net::FTP->new( $dns, Debug => 0 ) or die "Cannot connect to $dns: $@"; $ftp->login( $user, $passwd ) or die "Cannot login ", $ftp->message; $ftp->cwd($dir) or die "Cannot change working directory ", $ftp->message; my ( $loc, $buf, $data ); my ( $remote, $local ); $remote = $local = 'BikiniBottom.png'; $data = $ftp->retr($remote) or die "unable to retrieve $remote\n"; unless ( sysopen( $loc, $local, O_WRONLY | O_TRUNC | O_CREAT ) ) { die "Cannot open $local: $!\n"; } while ( my $len = $data->read( $buf, 2048 ) ) { printf( " %d bytes read\n", $len ); unless ( print $loc $buf ) { die "Cannot write to $local: $!\n"; $data->abort; close($loc); } } print "Total read : ", $data->bytes_read(), "\n"; $data->close; $ftp->quit;