OK, here's another variant without using modules.

#!/usr/local/bin/perl -w use strict; use warnings; # $time = str2time($date); my @date = ( 'Apr 8 1984', 'apr 08 84', '4/8/84', '04/08/84', '08 Apr 1984', 'April 8 1984', '8 april 1984'); my @months = qw/ January February March April May June July August September October November December /; # build month name lookup hash my %months = map { ($months[$_] => $_, substr($months[$_], 0, 3) => $_) } 0..9; foreach (@date) { my ($year, $month, $day) = parse_date($_); printf "%s %d %d\n", $months[$month], $day, $year; } sub parse_date { my $date_str = shift; my ($year, $month, $day); if ($date_str =~ /\//) { # validate date string die "Invalid date format" if $date_str !~ /[\/0..9]/; # in mm/dd/[cc]yy format ($month, $day, $year) = split /\//, $date_str; # normalization $year = normalize_year($year); $month -= 1; # zero based month, get rid of leading 0 $day += 0; # get rid of leading 0 } else { # in alpha month, numeric day format ($month, $day, $year) = split /\s+/, $date_str; # normalization $year = normalize_year($year); ($month, $day) = ($day, $month) if $month =~ /\d/; $day += 0; $month = ucfirst $month; die "Invalid month" if !exists $months{$month}; $month = $months{$month}; } return ($year, $month, $day); } sub normalize_year { my $year = shift; return length($year) == 2 ? $year > 30 ? $year + 1900 : $year + 2000 : $year; }
And the output -
April 8 1984 April 8 1984 April 8 1984 April 8 1984 April 8 1984 April 8 1984 April 8 1984

In reply to Re: Final date conversion happiness script by Roger
in thread Final date conversion happiness script by ctp

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.