http://qs1969.pair.com?node_id=55720


in reply to Regexp experts, come to rescue!

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\""; }

Replies are listed 'Best First'.
Re: Re: Regexp experts, come to rescue!
by jeroenes (Priest) on Feb 01, 2001 at 20:17 UTC
    In that line, you may be better of using
    sub match{ my $MType = shift; $_ eq $MType and return 1 for ( qw(-41 -55 -jj 1au 24u 36u )); }

    Hope this helps,

    Jeroen
    "We are not alone"(FZ)