aboutsummaryrefslogtreecommitdiff
path: root/challenge-048/dave-cross/perl/ch-2.pl
blob: 41d93def5c11be9fe9933ad249ae338b98c46f7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/perl
#
# The original question appears to contain a typo as it suggests we use
# the illogical 'mmddyyyy' date format. My solution uses 'ddmmyyyy' instead.

use strict;
use warnings;
use feature 'say';

use Time::Piece;
use Time::Seconds;

my $fmt = '%d%m%Y';

my ($y, $m, $d) = (2000, 1, 1);
my $str_date = sprintf '%02d%02d%d', $d, $m, $y;
my $date = Time::Piece->strptime($str_date, $fmt);

while ($date->year <= 2999) {
  $str_date = $date->strftime($fmt);
  if ($str_date eq reverse $str_date) {
    say $date->ymd, " is a palindrome ($str_date)";
  }
  $date += ONE_DAY;
}