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 >