One problem is you are performing the second and third regexps on the default variable '
$_'.
I.e. what your code is actually doing is this:
if ($MType =~ /-[45][15j]/ig ||
$_ =~ /[123][a46]u/ig ||
$_ =~ /7[9l][hb]/ig ) {
print "\"red\"";
} else {
print "\"#CCFFCC\"";
}
I would also offer '
$MType =~ /^(-(41|55|jj)|(1a|24|36)u)$/' as a regexp that would match all the cases you list (and no others).
However, if they are the only cases you want to match, creating a hash and checking for the existence of keys would be more efficient:
my %matches;
foreach (qw( -41 -55 -jj 1au 24u 36u)) {
$matches{$_} = '';
}
if (exists $matches{$MType}) {
print "\"red\"";
} else {
print "\"#CCFFCC\"";
}