@Variable and @Variables are two different... well... variables.
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my $Map_Request_Date = 'Jan 1 2017 12:00';
my $Map_Due_Date = 'Jan 31 2017 12:00';
my $Map_Cutover_Date = 'Feb 28 2017 23:59';
my $Map_Complete_Date = 'Mar 1 2017 12:01';
my $Map_Approved_Date = 'Dec 31 1999 0:01';
my @Variables = ($Map_Request_Date, $Map_Due_Date, $Map_Cutover_Date,
$Map_Complete_Date, $Map_Approved_Date);
my $X = 0;
for my $Date_Ref (@Variables) {
say $Date_Ref;
$Date_Ref =~ s/ +/ /; #When day is a single digit it creates two w
+hite spaces
my ($Month, $Day, $Year, $Time) = split / /, $Date_Ref, 4;
my %Months = ( Jan => '01', Feb => '02', Mar => '03', Apr => '04
+',
May => '05', Jun => '06', Jul => '07', Aug => '08
+',
Sep => '09', Oct => '10', Nov => '11', Dec => '12
+' );
$Day = "0$Day" if 1 == length $Day;
$Variables[$X++] = "$Year-$Months{$Month}-$Day";
}
say for @Variables;
for (same as foreach ) aliases the values it iterates over, so you don't need the array at all:
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my $Map_Request_Date = 'Jan 1 2017 12:00';
my $Map_Due_Date = 'Jan 31 2017 12:00';
my $Map_Cutover_Date = 'Feb 28 2017 23:59';
my $Map_Complete_Date = 'Mar 1 2017 12:01';
my $Map_Approved_Date = 'Dec 31 1999 0:01';
for my $Date_Ref ($Map_Request_Date, $Map_Due_Date, $Map_Cutover_Date,
$Map_Complete_Date, $Map_Approved_Date
) {
say $Date_Ref;
$Date_Ref =~ s/ +/ /;
my ($Month, $Day, $Year, $Time) = split / /, $Date_Ref, 4;
my %Months = ( Jan => '01', Feb => '02', Mar => '03', Apr => '04
+',
May => '05', Jun => '06', Jul => '07', Aug => '08
+',
Sep => '09', Oct => '10', Nov => '11', Dec => '12
+' );
$Day = sprintf '%02d', $Day;
$Date_Ref = "$Year-$Months{$Month}-$Day";
}
say for $Map_Request_Date, $Map_Due_Date, $Map_Cutover_Date,
$Map_Complete_Date, $Map_Approved_Date;
Note the usage of sprintf to format the day.
But it's even easier when you use Time::Piece :
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
use Time::Piece;
my $Map_Request_Date = 'Jan 1 2017 12:00';
my $Map_Due_Date = 'Jan 31 2017 12:00';
my $Map_Cutover_Date = 'Feb 28 2017 23:59';
my $Map_Complete_Date = 'Mar 1 2017 12:01';
my $Map_Approved_Date = 'Dec 31 1999 0:01';
for my $Date_Ref ($Map_Request_Date, $Map_Due_Date, $Map_Cutover_Date,
$Map_Complete_Date, $Map_Approved_Date
) {
say $Date_Ref;
my $tp = 'Time::Piece'->strptime($Date_Ref, '%b %d %Y %H:%M');
$Date_Ref = $tp->ymd;
}
say for $Map_Request_Date, $Map_Due_Date, $Map_Cutover_Date,
$Map_Complete_Date, $Map_Approved_Date;
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord
}map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,