NAME

Net::FTPServer::XferLog - parse FTP server xfer logs.

SYNOPSIS

# XFERLOG file:

Mon Oct  1 17:09:23 2001 0 127.0.0.1 2611 1774034 a _ o r tmbranno ftp 0 * c
Mon Oct  1 17:09:27 2001 0 127.0.0.1 22 1774034 a _ o r tmbranno ftp 0 * c
Mon Oct  1 17:09:31 2001 0 127.0.0.1 7276 p1774034_11i_zhs.zip a _ o r tmbranno ftp 0 * c

# parse xfer log PROGRAM:

use Net::FTPServer::XferLog;
open T, 'test.xlog' or die $!;
my $hashref;
while (<T>) {
  $hashref = Net::FTPServer::XferLog->parse_line($_);
  map { print "$_ => $hashref->{$_} \n" } @Net::FTPServer::XferLog::field;
  print "-------------------";

}

# OUTPUT

day_name => Mon 
month => Oct 
day => 1 
current_time => 17:09:23 
year => 2001 
transfer_time => 0 
remote_host => 127.0.0.1 
file_size => 2611 
filename => 1774034 
transfer_type => a 
special_action_flag => _ 
direction => o 
access_mode => r 
username => tmbranno 
service_name => ftp 
authentication_method => 0 
authenticated_user_id => * 
completion_status => c 
-------------------
day_name => Mon 
month => Oct 
day => 1 
current_time => 17:09:27 
year => 2001 
transfer_time => 0 
remote_host => 127.0.0.1 
file_size => 22 
filename => 1774034 
transfer_type => a 
special_action_flag => _ 
direction => o 
access_mode => r 
username => tmbranno 
service_name => ftp 
authentication_method => 0 
authenticated_user_id => * 
completion_status => c 
-------------------
day_name => Mon 
month => Oct 
day => 1 
current_time => 17:09:31 
year => 2001 
transfer_time => 0 
remote_host => 127.0.0.1 
file_size => 7276 
filename => p1774034_11i_zhs.zip 
transfer_type => a 
special_action_flag => _ 
direction => o 
access_mode => r 
username => tmbranno 
service_name => ftp 
authentication_method => 0 
authenticated_user_id => * 
completion_status => c 
-------------------

DESCRIPTION

This parses xferlog(5) files into Perl hashrefs. The fields returned are shown in the synopsis. Note that the standard current-time field is returned as 5 separate fields here: day_name, month, day, current_time, year.

EXPORT

None by default.

AUTHOR

T. M. Brannon <tbone@cpan.org>

Thanks to

  • Nic Heier for a doc fix.

  • Mike Edwards for pointing out a bug when parsing files with spaces in their name.

  • Zoltan Monori for pointing a bug in my code which parsed files with spaces in them the very next day!

SEE ALSO

  • Net::FTPServer - secure, extensible Perl FTP Server

  • www.FAQS.org - FTP RFC is here

  • wu-ftpd, proftpd. These FTP servers started this xferlog syntax, Net::FTPServer supports it.

  • slicker solutions to dealing with filenames with many spaces

    http://perlmonks.org/?node_id=632864