Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

how to dereference anonymous array

by rnaeye (Friar)
on Oct 18, 2011 at 17:36 UTC ( [id://932204]=perlquestion: print w/replies, xml ) Need Help??

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

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (3)
As of 2024-04-19 20:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found