Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

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!


Comment on Re: Merged list with regex matches
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://636966]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2015-07-07 03:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (86 votes), past polls