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"; }