Sim. Pipe tail -f
para um script que manipula sua média. O pipe nunca fecha e o script pode ser processado instantaneamente para cada linha que recebe ... ele irá bloquear até aparecer uma linha.
Além disso, deve-se ter em mente que é possível calcular uma média em execução sem precisar adicionar todos os valores a cada vez. Eu já vi isso o suficiente, sinto a necessidade de mencionar isso.
#generator.pl
$| = 1; #immediate flush
while (1) {
print int rand(100), "\n";
sleep 1;
}
#average.pl
$| = 1; #immediate output flush
my $average = 0;
my $count = 0;
while (<>) {
$average = ($average * $count + $_) / ($count + 1);
$count++;
print $average, "\n";
}
$ perl generator.pl > source &
[2] 15564
(reverse-i-search)'': ^C
$ tail -f source | perl average.pl
54
28
27.6666666666667
35
41
E apenas para sorrisos:
$tail -f source | awk '{total+=$0; count+=1; print total/count}'
Isso também tem feedback instantâneo. Parece-me que o seu problema está sendo armazenado em buffer pelo aplicativo que está gravando no arquivo que a cauda está lendo.
Veja link para informações sobre isso.