Are you counting from 1 or zero? If from 1 then it should probably be this (to give the first match at 10 to 21 inclusive):
use strict; use warnings; my $seq = 'dddddddddBBBBBBBBBBBBDDDDDDDDBBBBBBBBBBBBBBddddddddddddddddddddBBBB +BBBBBBBBBBDDBBBBBBBBddddddddddddd'; while ($seq =~ /(B+)/g) { my $seg = $1; my $seg_length = length ($seg); my $seg_end = pos ($seq); my $seg_start = $seg_end - $seg_length + 1; print $seg. "|" . $seg_start . "-" . $seg_end . "\n"; }
To say what you expect the answer to be when posting have a read of How to ask better questions using Test::More and sample data.
🦛
In reply to Re^3: Find the boundaries of a substring in a string
by hippo
in thread Find the boundaries of a substring in a string
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |