use strict; use warnings; use Net::FTP; use File::Listing qw(parse_dir); use POSIX qw(strftime); my ($host, $user, $passwd) = ('1.2.3.4', 'abcd', 'efgh'); my $dir = '/abc/def/ghi'; my $ftp = Net::FTP->new($host) or die qq{Cannot connect to $host: $@}; $ftp->login($user, $passwd) or die qq{Cannot login: }, $ftp->message; $ftp->cwd($dir) or die qq{Cannot cwd to $dir: }, $ftp->message; my $ls = $ftp->dir(); $ftp->binary(); foreach my $entry (parse_dir($ls)) { my ($name, $type, $size, $mtime, $mode) = @$entry; next unless $type eq 'f'; my $time_string = strftime "%Y-%m-%d", gmtime($mtime); if ($time_string ge '2013-03-21' && $time_string le '2013-04-20') { print "File $name has an mtime of $time_string\n"; $ftp->get($name) or die "get failed ", $ftp->message; } } $ftp->quit;