http://www.perlmonks.org?node_id=880122


in reply to simple array question

It seems that you are trying to assign a list to array @compass. Lists are surrounded by brackets, or parentheses if you prefer that term: (). Instead, you have used braces, which in this case create a reference to an anonymous hash, hence the warning messages.

So you need something more like this:

#!/usr/bin/perl use strict; use warnings; my @compass = ( ["NW", "N", "NE"], ["W", "center", "E"], ["SW", "S", "SE"], ); print $compass[0]->[1];

Replies are listed 'Best First'.
Re^2: simple array question
by chromatic (Archbishop) on Jan 03, 2011 at 04:37 UTC
    Lists are surrounded by brackets....

    Not rvalue lists! Commas, not parentheses, produce literal rvalue lists. The three array references in this variant of that code are a list just as much as in the original version:

    my @compass = ["NW", "N", "NE"], ["W", "center", "E"], ["SW", "S", "SE"], ;

    The difference between the two examples is the precedence of the assignment operator compared to the precedence of the comma operators.

Re^2: simple array question
by tw (Acolyte) on Jan 03, 2011 at 03:40 UTC

    thanks greatly that worked!

    it is nice to have some help when starting, may have been a while before I finally got it.

    seems that some code has { or [ also

    is that a typo or a perl version thing or OS thing or am I still missing something? thanks again