Merry Christmas Monks!!!
perl -e 'for(1..40){push(@a1,($_==20? "^" : " "))};$l=@a1;while(1){@a2
+="";print "@a2\n@a1\n";for(0..($l-1)){$a2[$_] = ($a1[$_] eq " " ? ($a
+1[$_-1] eq "^"? "^" : ($a1[$_+1] eq "^" ? "^" : " ")) : ($a1[$_-1] eq
+ " " ? "^" : ($a1[$_+1] eq " " ? "^" : " ")))}qx(sleep 1);@a1=@a2;}'
alternate = liner incorporating
blazar's suggestion :
perl -le '$l=80;$l2="!" x $l;substr+($l2^=$l2),$l/2,1,"\xFF";{local $_
+=$l2;y/\0\xFF/ ^/;print;($lf,$rt)=map{substr $l2 x 2,$_%$l,$l;}1,-1;$
+l2=$lf^$rt;select undef,undef,undef,.1;redo}'