$time_string =~ m/^2013-03-[23][0-9]/ #### my (undef,undef,undef,$mday,$mon,$year)=gmtime($mtime); if ($year == 2013 && $mon+1 == 3 && 21 <= $mday) #### use strict; use warnings; use Net::FTP; use Time::Local; use File::Listing qw(parse_dir); use POSIX qw(strftime); my ($host, $user, $passwd) = ('xxx.xxx.xxx.xxx', 'abc', 'abc'); 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 eq '2013-03-29') { print "File $name has an mtime of $time_string\n"; $ftp->get($name) or die "get failed ", $ftp->message; } } $ftp->quit;