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

rnaeye has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to learn about Perl complex data structures. I was wondering if anyone could tell me how to deference and print @my_array_reference2. Thank you.

#This one prints: my @my_array_reference1 = ( [qw(blue green red yellow)] ); foreach (@my_array_reference1){ print "@$_"; }; ############################################## #How can I dereference and print this one: my @my_array_reference2 = ( 'BLACK', [qw(blue green red yellow)] );

Replies are listed 'Best First'.
Re: how to dereference anonymous array
by Util (Priest) on Oct 18, 2011 at 18:06 UTC
    my @unholy_mix_of_scalars_and_arrayrefs = ( 'BLACK', [ qw( blue green red yellow ) ], 'FOO', [ qw( bar baz qux kibble ) ], ); for my $scalar_or_ref ( @unholy_mix_of_scalars_and_arrayrefs ) { my $type = ref $scalar_or_ref; if ( not defined $type) { print "undef!\n"; } elsif ( $type eq '' ) { print "scalar : $scalar_or_ref\n"; } elsif ( $type eq 'ARRAY' ) { print "arrayref: @$scalar_or_ref\n"; } else { print "unhandled reftype '$type': $scalar_or_ref\n"; } } # Maybe you meant this instead? my %sane_hash = ( 'BLACK' => [ qw( blue green red yellow ) ], 'FOO' => [ qw( bar baz qux kibble ) ], ); for my $key ( sort keys %sane_hash ) { print "key $key, array: @{$sane_hash{$key}}\n"; }
    Output:
    scalar  : BLACK
    arrayref: blue green red yellow
    scalar  : FOO
    arrayref: bar baz qux kibble
    key BLACK, array: blue green red yellow
    key FOO, array: bar baz qux kibble
    
Re: how to dereference anonymous array
by zentara (Archbishop) on Oct 18, 2011 at 17:58 UTC
    This is a brute force approach, there may be more elegant ways.
    #!/usr/bin/perl #How can I dereference and print this one: my @my_array_reference2 = ( 'BLACK', [qw(blue green red yellow)] ); foreach (@my_array_reference2) { if (ref $_ eq 'ARRAY'){print "@$_"} else {print "$_\n"} };

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh
Re: how to dereference anonymous array
by choroba (Cardinal) on Oct 18, 2011 at 21:18 UTC