in reply to Regular expression problems

If you want to populate $1, you have to use parentheses:
$readingframe =~ /(MHGR)/; $protein = $1;
or you can assign it directly:
($protein) = $readingframe =~ /(MHGR)/;
In your case, though, you can just output MHGR, as there is nothing dynamic in your regular expression.

See also Regexp Quote Like Operators, perlretut, perlre.