in reply to keys with an expression
This does create a temporary hash, but avoids the need to choose a name for the hash:
my @items = qw( foo bar bar baz quux baz ); my @unique = local(*_) && grep(!$_{$_}++, @items); print "$_\n" for @unique; [download]