$string='abchijk'; while ($string =~ s/(\w{2})(.*)$/$1\|$2/) { print "$string\n"; } should print: ab|chijk ab|ch|ijk ab|ch|ij|k