Thanks Chas and everyone else.
The solution worked perfect
Bbrecht
On Dec 8, 2007 7:35 AM, Chas. Owens <[EMAIL PROTECTED]> wrote:
> On Dec 7, 2007 6:10 PM, <[EMAIL PROTECTED]> wrote:
> > I'm trying to write a subroutine that returns the full month name, for
> > example January, or February when I call the subroutine and pass a
> > scalar, for example $m that could have a value in one of the following
> > format
> >
> > 1. three letter format, for example jan or feb, or
> > 2. one or digit format for example "01" or "1" for january
> snip
>
> TIMTOWTDI. In addition to the ways I implemented it below you could
> use a set of cascading hashes with ||s, a substitution, and myriad*
> other ways.
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
> use Date::Manip;
>
> sub using_date_manip {
> my $month = shift or die "bad number of arguments";
> my $d = ParseDate("2007-$month-01") or die "bad argument:
> [$month]";
> return UnixDate($d, "%B");
> }
>
> {
> my %month_map = (
> '01' => 'January',
> 1 => 'January',
> Jan => 'January',
> jan => 'January',
> '02' => 'February',
> 2 => 'February',
> Feb => 'February',
> feb => 'February',
> etc => 'etc'
> );
> sub using_hash {
> my $month = shift or die "bad number of arguments";
> return $month_map{$month} || die "bad argument: [$month]";
> }
> }
>
> for my $arg (qw(02 2 feb Feb)) {
> print "using_date_manip($arg): ", using_date_manip($arg), "\n",
> "using_hash($arg): ", using_hash($arg), "\n";
> }
>
> * yes, this is hyperbole, I doubt there are 10,000 unique methods
>