The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Snowing on Pugs.
# Run this on a screen at least 72 wide by 30 deep.
# Enjoy! -- asavige aka mad golfer

sub sleepy{for(1..5500){}}
sub C{system($?OS eq 'MSWin32'??'ClS'::'clear')}
my$u;my$g='#';my$U;my$s='.';
for(71,0,71,0,2,13,56,0,2,16,53,0,4,5,3,7,52,0,4,5,5
,6,51,0,4,5,6,6,50,0,4,5,6,6,50,0,4,5,6,6,50,0,4,5,6
,5,2,7,3,6,6,12,4,6,1,1,3,0,4,5,5,5,5,5,4,5,5,4,2,4,
6,3,4,2,3,0,4,14,6,5,4,5,4,4,4,4,4,3,6,1,3,0,4,11,9,
5,4,5,3,4,6,4,3,4,9,0,4,7,13,5,4,5,3,4,6,4,4,4,8,0,4
,5,15,5,4,5,3,4,6,4,5,5,6,0,4,5,15,5,4,5,4,4,4,4,8,5
,4,0,4,5,15,5,4,5,5,4,2,4,10,5,3,0,4,5,15,5,3,6,7,7,
6,1,5,5,2,0,2,10,12,14,6,1,13,2,2,6,3,0,2,10,13,5,3,
6,4,12,3,1,1,6,5,0,42,14,15,0,41,4,7,4,15,0,41,3,9,3
,15,0,41,3,9,3,15,0,42,13,16,0,44,9,18,0,71,0,71,0)
->$p{$u~=($g=$g~^"\r")x$p~"\n"x!$p;
     $U~=($s=$s~^"\r")x$p~"\n"x!$p}
my@v=split("\n",$u).map():{$_~"\n"};@v.pop();
my@x=(1..28).map():{join("",(1..71).map():{my$r=rand();$r < 0.2??'.'::' '})~"\n"};
my@y=@x;
for(-28..0)->$i{
    C();print@x;
    @x=(@y.pop(),@x[0..-$i-3],@v.pop(),@x[-$i...]);
    sleepy();
}
for(1..9){C();say$U;for(1..500){};C();say$u;for(1..500){}}
say"Woot!";