Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Merged list with regex matches

by Sidhekin (Priest)
on Sep 04, 2007 at 15:49 UTC ( #636966=note: print w/replies, xml ) Need Help??

in reply to Merged list with regex matches

On the assumption that every $cn will match at most one $bn (or that you don't care about more than the first), you could precompile a regex and use the result of the match:

#!/usr/bin/perl use strict; use warnings; my @CS_CHECKS = ( '00012345', 'D123470', '0000123450', '0000023456', ' +50000123990' ); my @B_CHECKS = ( '1234', '12345', '123990', '12399' ); my $re = do { my $x = join '|', map "\Q$_", @B_CHECKS; qr/^[056]0+($x) +$/ }; $_ =~ $re and print "$1 = $_\n" for @CS_CHECKS;

Of course, the regex engine is still run through the alternatives (up until one matches), but at least it looks more elegant. :)

(Oh, and it may be faster too, what with not having to recompile the regex again and again. But don't quote me on that.)

print "Just another Perl ${\(trickster and hacker)},"
The Sidhekin proves Sidhe did it!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://636966]
[marto]: good morning all
[Corion]: Hi marto!
[Corion]: I hope all is well marto! ;) My godson had a surprise visit to the hospital yesterday because he fell and had cut his skin besides his eye, but everything was glued together again and all is well
[marto]: good grief, that's not fun, glad to hear all is as well as could be :)

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (8)
As of 2016-12-08 09:17 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (137 votes). Check out past polls.