Я не уверен, что это легко сделать эффективно с односторонним хешем. Весь смысл хэша состоит в том, чтобы преобразовать ключ в значение (или позицию значения, если вы смотрите под обложками). Вы можете выполнить исчерпывающий поиск по всем значениям, собирая ключи по ходу работы, но это не так эффективно, как поиск по хешу.
Чтобы эффективно пойти другим путем , вы можете рассмотреть двусторонний хэш, например:
%fruit = (
'apple' => ['red','green'],
'kiwi' => 'green',
'banana' => 'yellow',
);
%antifruit = (
'red' => 'apple',
'green' => ['apple','kiwi'],
'yellow' => 'banana',
);
print "The apple is @{$fruit{'apple'}}.\n";
print "The kiwi is $fruit{'kiwi'}.\n";
print "A yellow thing is $antifruit{'yellow'}.\n";