use Storable qw(dclone);$r=23;$c=79;for $y(0..$r){for $x(0..$c){$l[$x][$y]=0;if(int(rand(7))==0){$l[$x][$y]=1;}}}while(0==0){my @f=@{dclone(\@l)};print"\033[2J";for $y(0..$r){for $x(0..$c){if($l[$x][$y]){print"O";}else{print" ";}my $n;for $h(-1..1){for $s(-1..1){next if (($s==0)&&($h==0));$n+=$l[($x+$s)%$c][($y+$h)%$r];}}if($l[$x][$y]==1){if($n<=1){$f[$x][$y]=0;}elsif($n>=4){$f[$x][$y]=0;}}elsif($n==3){$f[$x][$y]=1;}}print"\n";}@l=@{dclone(\@f)};sleep 1;}