#!perl -wl use strict; my $s = 'abcd'; my @pairs1 = $s =~ m{ (?= (..)).? (?{ printf qq{ '$^N'} }) }xmsg; # ^^ print ''; printf qq{ :$_:} for @pairs1; print ''; my @pairs2 = $s =~ m{ (?= (..) (?{ printf qq{ '$^N'} })).? }xmsg; # ^^ print ''; printf qq{ :$_:} for @pairs2; print ''; __END__ 'ab' 'bc' 'cd' :ab: :bc: :cd: 'ab' 'bc' 'cd' :ab: :bc: :cd: