while ($text =~ /$expr/g) { my ($prefix,$term,$suffix) = ($1, $2, $3); print "$prefix$term$suffix\n"; # update pos to just after $term pos() = pos() - length($suffix); }