in reply to (Golf) Character windows

Messy in the extreme. Without really looking, I came up with several nearly identical solutions:
  
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;
update: do we have to initialize @s, and can we assume use re 'eval' is in effect? :)
52 chars: for$i(1..$s){push@s,/(?(?{$i<$s})^)(?=(.{1,$i}))/sg}
update2: A failed attempt at code reuse...
55 chars, string in $t: @s=map{eval'$t=~/(?=(.{1,$_}))/s'.($_<$s?'':"g")}1..$s;
   MeowChow                                   
               s aamecha.s a..a\u$&owag.print