#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';

sub fz {
	my @pattern = @_;
	return sub { $pattern[(shift() - 1) % @pattern] };
}

my $fizz = fz("", "", "fizz");
my $buzz = fz("", "", "", "", "buzz");

foreach my $i (1..100) {
	say ($fizz->($i) . $buzz->($i) || $i);
}
