@l = qw( -1 43 -2 1 -84 33 45 1 5 -12 -3 13 -82 48 21 13 -6 -76 40 25 2 8 -6 13 -104); #### 74 117 115 116 32 65 110 111 116 104 101 114 32 80 101 114 108 32 72 97 99 107 101 114 10 #### if(my@t=unpack"C*",do{local($/);}) { my$t=0; { $t[0]==126 ? ((t *STDERR,chr$t),last): ($t+=shift@t)and redo } c $0; $d=$t[$#t]; $c+=$l[$_]for 0..$d } else { $c+=$l[0]; $d=0 } #### if($d<@l){ open M,">>$0"; my@p=$c; my$r; do{ $r=int(rand &P($c,int(rand($c-($c/3))+1)+int(2*$c/3)) )+1 } while $r==1; @p=i@pwhile$r--; (@p<1<<3) ? (@p=p(@p)and t(*M,(map{chr}@{$p[int(rand(0+@p))+1]}),'~',chr($d+1))): (t(*M,(map{chr}@p),'~',chr($d+1); exec"perl $0" }