RosettaCodeData/Task/Averages-Simple-moving-average/Perl/averages-simple-moving-average.pl
2023-07-01 13:44:08 -04:00

18 lines
383 B
Perl

sub sma_generator {
my $period = shift;
my (@list, $sum);
return sub {
my $number = shift;
push @list, $number;
$sum += $number;
$sum -= shift @list if @list > $period;
return $sum / @list;
}
}
# Usage:
my $sma = sma_generator(3);
for (1, 2, 3, 2, 7) {
printf "append $_ --> sma = %.2f (with period 3)\n", $sma->($_);
}