in reply to Re^2: Regular expression help: why does this not match?
in thread Regular expression help: why does this not match?
my $valid = join "|", @valid; print "okay" if /^$valid$/;
There are actually two improvements to make in the above code. First, the members of the valid list themselves might contain metacharacters in need of quoting; second, Perl has the qr// operator to make this more efficient:
# don't run this code on every match: the idea is the qr// needs # to be computed only once. my $valid = join "|", map { quotemeta } @valid; my $valid_re = qr/^$valid$/; # now match as many times as you like. print "$_: " . (/$valid_re/ ? "okay" : "not okay") . "\n" for @a_bunch_of_inputs;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Regular expression help: why does this not match?
by Hofmator (Curate) on Jan 19, 2007 at 08:01 UTC |