52 chars: for$i(1..$s){push@s,/(?(?{$i<$s})^)(?=(.{1,$i}))/sg}