```#!/usr/bin/perl -w

############################################################################
#  misc/floating-average
#
#  Part of the STXXL. See http://stxxl.sourceforge.net
#
#  Copyright (C) 2007 Johannes Singler <singler@ira.uka.de>
#  Copyright (C) 2010 Andreas Beckmann <beckmann@cs.uni-frankfurt.de>
#
#  (See accompanying file LICENSE_1_0.txt or copy at
############################################################################

# Calculate the floating average over \$1 values in all columns
# Reading from stdin, writing to stdout
# Example: floating-average 3 <original >averaged

use strict;

my \$span = \$ARGV[0];
my @sums;
my @history;
my \$count_sum = 1;
my \$line_number = 0;
my \$line;

while(\$line = <STDIN>)
{
my @parts = split /\s+/, \$line;

my \$c = 0;
my \$part;
foreach \$part(@parts)
{
if(\$part =~ /^[+-]?\d+\.?\d*([eE][+-]?\d+)?\$/)
{ #is number
if(\$count_sum == \$span)
{
\$sums[\$c] -= \$history[\$line_number % \$span][\$c] || 0;
}
\$history[\$line_number % \$span][\$c] = \$part;
\$sums[\$c] += \$history[\$line_number % \$span][\$c];
printf("%14.6f ", \$sums[\$c] / \$count_sum);
++\$c;
}
else
{
print(" \$part ");
}
}
print("\n");

if(\$count_sum < \$span)
{
++\$count_sum;
}
++\$line_number;
}
```