The regexen we might build for that are neither unique nor equivalent to each other. If you want a regex that only matches something literal in the list,
my $re = do {
local $" = '|';
qr/^@{[map {quotemeta} @list]}$/;
};
Automatically generated regexes are often inefficient or unwieldy in the interest of simpler generating code. Would you take qr/^[11111][22333][33333][44444][12312]$/ as a solution?
my @sets;
for (@list) {
my $str = $_;
for (0..(length-1)) {
$sets[$_] .= substr $str, $_, 1;
}
}
my $re = qr/^${\join '', map {"[$_]"} @sets}$/;
This is a pretty open-ended problem. You should look carefully at what you expect from your data and what kind of solution you want.
Update: If the real problem is to construct an efficient test of whether a string is in @list, use a hash:
{
my %test_hash;
@test_hash{@list} = ();
sub efficient_test { exists $test_hash{+shift}; }
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|