<?xml version="1.0" encoding="windows-1252"?>
<node id="1004224" title="Re^2: Regexp::Assemble hangs with a certain case" created="2012-11-16 12:20:18" updated="2012-11-16 12:20:18">
<type id="11">
note</type>
<author id="910459">
kimmel</author>
<data>
<field name="doctext">
&lt;p&gt;Ooops I did not check the code I posted, again. I really need to stop doing that. Here is what the program should have looked like.&lt;/p&gt;

&lt;code&gt;
use v5.16;
use warnings;
use autodie qw( :all );
use utf8::all;
use File::Slurp qw( read_file );
use Regexp::Assemble;
use Benchmark qw( cmpthese :hireswallclock );

my %seen;
my %seen2;

my $fname   = 'dracula.txt';
my $content = read_file($fname);
$content =~ tr/!"#$%&amp;'()*+,\-.\/:;&lt;=&gt;?@\[\\]^_`{|}~/ /;

my @patterns = read_file('sample_patterns');
chomp @patterns;
my $regex = join '|', map {quotemeta} @patterns;
$regex = qr/\b($regex)\b/ixms;

my $regex2 = Regexp::Assemble-&gt;new-&gt;add(@patterns);
$regex2-&gt;anchor_word(1);
$regex2-&gt;flags('ixms');
$regex2-&gt;re();

cmpthese(
    -5,
    {   
        'one' =&gt; sub {
            $seen{$1}++ while $content =~ /$regex/g;
        },
        'two' =&gt; sub {
            $seen2{$regex2-&gt;mvar(1)}++ while $content =~ /$regex2/;
        },
    }
);
&lt;/code&gt;

&lt;p&gt;I understand now why it was acting the way it was.&lt;/p&gt;</field>
<field name="root_node">
1004038</field>
<field name="parent_node">
1004110</field>
</data>
</node>
