What techniques for making my code more compact and less maintainable have I overlooked?
There are an infinite number of very different ways. Here's just one example:
use 5.012;
use warnings;
sub task { state $task='@PERLMONKSFAITH'; exit if ++$_[0] > 100; $_->[
+ord("`"^" "^($task.=substr $task,0,1,''))] }
$_->[0](my $n=1) for [
sub { say $_[0]; goto &{&task} },
sub { say "Fizz"; goto &{&task} },
sub { say "Buzz"; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say "FizzBuzz"; goto &{&task} },
sub { say "Fizz"; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say "Fizz"; goto &{&task} },
sub { say "FizzBuzz"; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say "Fizz"; goto &{&task} },
sub { say "Buzz"; goto &{&task} },
sub { say "Fizz"; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say "Buzz"; goto &{&task} },
sub { say $_[0]; goto &{&task} },
sub { say "Buzz"; goto &{&task} },
sub { say $_[0]; goto &{&task} },
];
|