Dear Monks,

So in attempting to become a totally awesome regexer, I have run into a problem that I am hoping you can assist me with.

Specifically I have the following problem, I have text patterns and strings that I want to count the patterns in, but I want to allow for overlapping patterns in the string. I have hunted around these forums and found some good advice, but I have an additional problem. Here is what I can get:

my $first_counter = 0; my $second_counter = 0; my $sequence = "GGGGGGGAGAAAAAAAAAAAAAAAGAAGGA"; # This is what I initially did, but did not get the right answer $first_counter++ while $sequence =~/AAAAA/g; #Here I get 3 # Because I want to count the overlapping AAAAA in the sequence I hunt +ed around and found this solution $sequence =~ /AAAAA(?{$second_counter++})(?!)/; # This gives the right + answer of 11 print "First counter: $first_counter\n"; print "Second counter: $second_counter\n";
Now what I really want to do is that instead of putting in the pattern in the search, I would like to pass it as a variable, i.e. something like:
my @real_count = (0,0,0,0); my $sequence = "GGGGGGGAGAAAAAAAAAAAAAAAGAAGGA"; my @pattern; $pattern[0] = "AAAAA"; $pattern[1] = "GGGGG"; $pattern[2] = "GGAGA"; $pattern[3] = "GAAGG"; for (my $i=0; $i <= 3; $i++) { $sequence =~ /$pattern[$i](?{$real_count[$i]++})(?!)/; } foreach (@real_count) { print "$_\n"; }
When I run the above I get the following error message (which I admit I do not understand):

"Eval-group not allowed at runtime, use re 'eval' in regex m/AAAAA(?{$real_count$i++})(?!)/ at E:\Bioreka\Test\multimatch.pl line 13."

Can anyone help point me to how to address this error? I would appreciate it. Thanks in advance.


In reply to Regex KungFu help needed by drblove27

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.