Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Help with an array Conversion

by barrycarlyon (Beadle)
on Apr 26, 2006 at 21:19 UTC ( #545881=perlquestion: print w/ replies, xml ) Need Help??
barrycarlyon has asked for the wisdom of the Perl Monks concerning the following question:

In the node Help with an IF?, I was told about this:

my $title = 'Political Animal'; # Or in your case, $q->param('title') my %links_to = ( "Political Animal" => "pa", "Newslink" => "nl", "New Slang" => "ns", "Rant With Ryan" => "rwr", "Planet Venus" => "pv", "All Day Breakfast" => "adb", ); my $link = $links_to{$title};

Upon trying something similar but with:

my %DAYS_OF_WEEK = ("0" => "Sunday", "1" => "Monday", "2" => "Tuesday", "3" => "Wednesday", "4" => "Thursday", "5" => "Friday", "6" => "Saturday", ); my $dayname = $DAYS_OF_WEEK($day);

Where $day is obtained using Class::Date (well locatine time actually)

It generates a 500 Internal Server Error, what am I doing wrong?

Yours Hopefully

Barry Carlyon barry@barrycarlyon.co.uk

2006-04-27 Retitled by g0n, as per Monastery guidelines
Original title: 'SOLVED Help with an array Conversion'

Comment on Help with an array Conversion
Select or Download Code
Re: Help with an array Conversion
by Paladin (Priest) on Apr 26, 2006 at 21:31 UTC
    Hashes are indexed with { } not ( ) like you have.
Re: Help with an array Conversion
by Zaxo (Archbishop) on Apr 26, 2006 at 21:32 UTC

    What message do you get in your server error log?

    What you show will work if used properly [Oops, not quite - Paladin++ caught a true error]. You're not showing exactly how you get $day or what happens if a value for an undefined key is read from the hash.

    With a numerical sequence of keys, an array may be more natural than a hash for that. One of the many time string utilities may be better yet. I like,

    use POSIX 'strftime'; my $dayname = strftime '%A', localtime;
    That will honor locale, so anybody can run your script and get the day named in their own language.

    After Compline,
    Zaxo

      my (undef, undef, undef, undef, undef, undef, $day, undef, undef) = localtime(time);

      And the error log: still searching the error log,

      changed () to {} still an error

      error log:

      Wed Apr 26 21:40:03 2006 alert client 86.141.242.181 /home/lsrfm/webs/www.lsrfm.com/htdocs/.htaccess: Global symbol "$DAYS_OF_WEEK" requires explicit package name at /home/lsrfm/webs/www.lsrfm.com/perllib/LSRfm/Base.pm line 271. /weblogs/lon-web-1/httpd-error.log:syntax error at /home/lsrfm/webs/www.lsrfm.com/perllib/LSRfm/Base.pm line 271, near "$DAYS_OF_WEEK(" /weblogs/lon-web-1/httpd-error.log:BEGIN failed--compilation aborted at /home/lsrfm/webs/www.lsrfm.com/perllib/LSRfm/Application/Home.pm line 5. /weblogs/lon-web-1/httpd-error.log:Compilation failed in require at /home/lsrfm/webs/www.lsrfm.com/htdocs/.htaccess line 8. /weblogs/lon-web-1/httpd-error.log:BEGIN failed--compilation aborted at /home/lsrfm/webs/www.lsrfm.com/htdocs/.htaccess line 8.

      Barry Carlyon barry@barrycarlyon.co.uk

        Ah, very good, you're using strict. You need to declare my $DAYS_OF_WEEK; or use vars $DAYS_OF_WEEK; somewhere at or before first using the name. The error Paladin caught will then crop up unless you've already fixed it.

        After Compline,
        Zaxo

Re: Help with an array Conversion
by ikegami (Pope) on Apr 26, 2006 at 22:06 UTC

    Why not use an array?

    my @DAYS_OF_WEEK = qw( Sunday Monday Tuesday Wednesday Thursday Friday Saturday ); my $dayname = $DAYS_OF_WEEK[$day];

    That said, POSIX's strftime is indeed even better.

      Solved Please Ignore (i looked at cpan docs, lol)

      Given posix strftime is there a similar way to obtain the month name?

      Barry Carlyon barry@barrycarlyon.co.uk
        >perl -e "use POSIX; print strftime '%b', localtime Apr >perl -e "use POSIX; print strftime '%B', localtime April
Re: Help with an array Conversion
by perladdict (Chaplain) on Apr 27, 2006 at 04:50 UTC
    hi,monk

    Here is my code.

    #!/usr/bin/perl -w my $day='0'; my %DAYS_OF_WEEK = ("0" => "Sunday", "1" => "Monday", "2" => "Tuesday", "3" => "Wednesday", "4" => "Thursday", "5" => "Friday", "6" => "Saturday", ); my $dayname = $DAYS_OF_WEEK{$day}; print "$dayname\n";

    Edit: g0n corrected code tags

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://545881]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2014-12-27 21:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (177 votes), past polls