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