#!perl use strict; use warnings; my $string = qq[FGTXYZGTFABCGHABCFGTXYZADXYZGTYABC]; while ($string =~ /[XYZ]{3}([A-Za-z]{0,21}?)[ABC]{3}/g) { print $-[0] . ', ' . length($1) . $/; } __OUTPUT__ 3, 3 20, 8