@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,

In reply to Re: Array of variables by choroba
in thread Array of variables by Michael W

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.