in reply to Month Names

Because unquoted strings *are* legal, when you're not using 'use strict'. And not using 'use strict' is a *very* bad idea. A better way to write that particular statement would be:
#!/usr/local/bin/perl -w use strict; { my $mn = 3; my $month = (qw(January Feburary March April May June July August S +eptember October November December))[$mn]; print $month, "\n"; }
But as how you should best to do your language conversion is very dependant on how you manage it in the rest of your program. Could you give an example of how you're doing it now? Are you doing global search and replaces, resource files, or a runtime variable that sets the langauge?

--Chris

e-mail jcwren

Replies are listed 'Best First'.
RE: (jcwren) Re: Month Names
by merlyn (Sage) on Sep 27, 2000 at 19:12 UTC
    { my $mn = 3; my $month = (qw(January Feburary March April May June July August S +eptember October November December))[$mn]; print $month, "\n"; }
    Be aware that at least in 5.5.3 and earlier, this list is split at runtime causing some performance penalty if invoked repeatedly. You can do the split once at compile time by wrapping a subroutine inside a BEGIN block:
    BEGIN { my @month_names = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +); sub month_name_for { my $number = shift; die if $number < 0 or $number > $#month_names or $number != int($n +umber); $month_names[$number]; } }

    -- Randal L. Schwartz, Perl hacker