is($re->stats_dup(), 1, "stats_dup 2"); is($re->stats_length(), 0, "stats_length 2"); $str = $re->as_string(); is($str, '\\.[*+]', "stats str 2"); is($re->stats_length(), 6, "stats len 2 <{$str}>"); # CPAN bug #24171 # given a list of strings $str = ['a b', 'awb', 'a1b', 'bar', "a\nb"]; foreach (array('s', 'w', 'd') as $meta) { # given a list of patterns $re_list = ["a\\{$meta}b", "a\\@{[uc{$meta}]}b"]; # produce an assembled pattern $r = new Regexp_Assemble(); $re = $r->add($re_list)->re(); $r2 = new Regexp_Assemble(); $re_fold = $r2->fold_meta_pairs(0)->add($re_list)->re(); # test it against the strings foreach ($str as $s) { # any match? $ok = 0; foreach ($re_list as $_) { if (preg_match("/{$_}/", $s)) { $ok = 1; } } # does the assemble regexp match as well? $ptr = $s; // $ptr =~ s/\\/\\\\/; $ptr = preg_replace('/\\\\/', '/\\\\\\\\/', $ptr); // $ptr =~ s/\n/\\n/; $ptr = preg_replace('/\\n/', '/\\\\n/', $ptr);