my $AVERAGE_OVER = 10; # number of periods for moving average ... my @averages = do { my $sum = 0; my @summers = (); map { $sum += $_; push @summers, $_; $sum -= shift @summers if @summers > $AVERAGE_OVER; $sum / @summers; } @data; # THIS IS THE INPUT DATA };