55 chars, string in $t: @s=map{eval'$t=~/(?=(.{1,$_}))/s'.($_<$s?'':"g")}1..$s;