The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# 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!";