If you go to your admin module, you can get the full information of the error occurring. Without that, there's still a few things sticking out:
Unverified Perl doesn't respect internal labels. You need to use the values saved to the database:
my $r1 = VALUE('NoPumpNoCGM_r1');
if ($r1 == 1 || $r1 == 2)
You need a semicolon after the second return statement, just like the one after the first one.
You should include a space character after the keyword "return."
Both backslash characters can be removed. Those appeared in the earlier post as a special requirement for printing out the dollar symbol character.