POE::Component::SmokeBox::Recent::FTP - an extremely minimal FTP client
# Obtain the RECENT file from a given CPAN mirror. use strict; use warnings; use File::Spec; use POE qw(Component::SmokeBox::Recent::FTP); my $site = shift || die "You must provide a site parameter\n"; my $path = shift || '/'; POE::Session->create( package_states => [ main => [qw(_start ftp_sockerr ftp_error ftp_data ftp_done)], ] ); $poe_kernel->run(); exit 0; sub _start { POE::Component::SmokeBox::Recent::FTP->spawn( address => $site, path => File::Spec::Unix->catfile( $path, 'RECENT' ) ); return; } sub ftp_sockerr { warn join ' ', @_[ARG0..$#_]; return; } sub ftp_error { warn "Error: '" . $_[ARG0] . "'\n"; return; } sub ftp_data { print $_[ARG0], "\n"; return; } sub ftp_done { warn "Transfer complete\n"; return; }
POE::Component::SmokeBox::Recent::FTP is the small helper module used by POE::Component::SmokeBox::Recent to do FTP client duties.
It only implements an ascii type passive FTP RETR.
RETR
spawn
Takes a number of parameters:
'address', the hostname/address of the FTP site to connect to, mandatory; 'path', the path to the file you want to retrieve from the site, mandatory; 'session', optional if the poco is spawned from within another session; 'prefix', specify an event prefix other than the default of 'ftp';
The component sends the following events. If you have changed the prefixi option in spawn then substitute ftp with the event prefix that you specified.
prefixi
ftp
ftp_sockerr
Generated if there is a problem connecting to the given FTP host/address. ARG0 contains the name of the operation that failed. ARG1 and ARG2 hold numeric and string values for $!, respectively.
ARG0
ARG1
ARG2
$!
ftp_error
Generated if there is an FTP error. ARG0 contains the error sent by the server.
ftp_data
One of these events will be emitted for each line of file you have specified to be retrieved. ARG0 contains that line.
ftp_done
Emitted when the transfer has finished.
Chris BinGOs Williams <chris@bingosnet.co.uk>
BinGOs
Copyright © Chris Williams
This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.
To install POE::Component::SmokeBox::Recent, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POE::Component::SmokeBox::Recent
CPAN shell
perl -MCPAN -e shell install POE::Component::SmokeBox::Recent
For more information on module installation, please visit the detailed CPAN module installation guide.