Kevin Pfeiffer wrote:
>
> (Forgive the excitement)
>
> I just reversed the %n2m construct - the original builds a hash using map
> that lets you convert numbers to months, etc. (I probably found it here).
>
> In keeping with my feeling that with 'map' one can do almost anything (if I
> knew how) I'm happy to have managed to build something using 'map' (without
> external help I mean). Seems easy, now. ;-)
>
> # months into numbers...
>
> $month = "Jan" # for example
>
> my %m2n;
> my $x = "00";
>
> map { $m2n{$_} = ++$x } qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
>
> my $mon = $m2n{$month};
>
> [snip]
You don't really need to use map, you can just assign the keys and values directly:
my %m2n = qw(Jan 01 Feb 02 Mar 03 Apr 04 May 05 Jun 06 Jul 07 Aug 08 Sep 09 Oct 10 Nov
11 Dec 12);
If you want to use map then you should assign the list returned from map to your hash:
my $x = '00';
my %m2n = map { $_ => ++$x } qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
If you want to convert a number to a month name here is some serious magic from Randal
L. Schwartz.
sub magic {substr gmtime 259e4*(-.5+shift),4,3}
Or some more traditional methods:
sub mon_name { [qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/]->[-1+shift] }
sub mon_name { substr"JanFebMarAprMayJunJulAugSepOctNovDec",3*(-1+shift),3 }
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]