I'll first note that <pre> is your friend (but yay, view-source).
$time_string =~ m/^2013-03-[23][0-9]/
would be one way to do it. Though I think I might prefer
my (undef,undef,undef,$mday,$mon,$year)=gmtime($mtime);
if ($year == 2013 && $mon+1 == 3 && 21 <= $mday)
It's a hard call, what with having to deal with zero-based $mon
Original code below:
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;