in reply to Perl style... help me figure this out.

I am trying to steer clear from arrays and grep.
These should be your "buddies"!

For a "list" of stuff, ordered or not, think: "array".
For a subset of an array, think: "grep"

The code below uses an uncommon feature, a label.
However it seemed to be appropriate in this situation.
"Seldom used" doesn't mean "never used".

#!/usr/bin/perl -w use strict; my @values = ('CHOCOLATE CHIP', 'PLATINUM', 'GASOLINE', 'GOLD'); my %hash = ( 'COOKIE' => ['CHOCOLATE CHIP', 'PEANUT BUTTER'], 'METAL' => ['SILVER', 'GOLD', 'PLATINUM'], ); THING: foreach my $thing (@values) { foreach my $type (keys %hash) { if (grep{$_ eq $thing}@{$hash{$type}} ) { print "$thing is a $type\n"; next THING; } } print "$thing is UNKOWN\n"; } __END__ CHOCOLATE CHIP is a COOKIE PLATINUM is a METAL GASOLINE is UNKOWN GOLD is a METAL
Update: UNKOWN, UNKNOWN is a typo..means nothing in the sense of the code.
These things happen...