FizzBuzzってこんな感じでしったー?

流行に遅れましたが…

つまらないことでもアウトプットしていこうかなとか
とりあえず、ループ使わない、剰余演算子使わない縛り
あれ?mapと再起って広義ではループなのか?

map {
    print fizz($_) . buzz($_) || $_, $/
} (1 .. 100);

sub fizz {
    my $i = shift;
    $i < 1 && return $i ? q{} : 'Fizz';
    (caller(0))[3]($i -= 3);
}

sub buzz {
    my $i = shift;
    $i < 1 && return $i ? q{} : 'Buzz';
    (caller(0))[3]($i -= 5);
}


追記: もういっこ。仕事では使えませんね

my ($i, $fizz, $buzz, $max) = (1, 3, 5, 100);
FizzBuzz: {
  print q{} . (--$fizz ? q{} : 'fizz') . (--$buzz ? q{} : 'buzz') || $i, $/
    and (($fizz, $buzz) = ($fizz || 3, $buzz || 5)) and $max > $i++ && redo;
}