in reply to alpha vs alpha numeric

You are using odd syntax, but that shouldn't be an issue. Normal syntax is
if ($ref->{prodname} =~ /$value/ || $ref->{key1} =~ /$value/)

You are saying it returns a list of items, but all the code shows is a conditional. There isn't anything wrong with the line. It's probably "failing" because either the hash or $value contains other values than you expect.

Could you give an example of a failure, including the values for the hash entries and $value.

Abigail