57 chars:
$t=$_;@s=(map({substr$t,0,$_}1..$s-1),/(?=(.{1,$s}))/gs);
57 chars, string in $t:
@s=map{substr$t,$_>0&&$_,$_<0?$s+$_:$s}1-$s..-1+length$t;
55 chars, string in $t:
@s=(map({substr$t,0,$_}1..$s-1),$t=~/(?=(.{1,$s}))/gs);
55 chars:
@s=/./gs;@s=map{join'',@s[$_>0&&$_..$_+$s]}- --$s..$#s;
####
52 chars:
for$i(1..$s){push@s,/(?(?{$i<$s})^)(?=(.{1,$i}))/sg}
##
##
55 chars, string in $t:
@s=map{eval'$t=~/(?=(.{1,$_}))/s'.($_<$s?'':"g")}1..$s;