#!/usr/bin/perl use strict; use warnings; use List::Util 'sum'; # pm 1158142 open my $fh, '<', 'j2.txt' or die $!; my (undef, @percent) = split /[\s%]+/, <$fh>; #split on spaces and % sign my ($gene, @data) = split ' ', <$fh>; close $fh or die $!; my $limit = 10; my $start = 0; my @avgs; print join("\t", $gene, map {sprintf "Average_%d%%", 10 * $_} 1 .. 10), "\n"; for my $i (0 .. $#percent) { if ($percent[$i] <= $limit) { if ($percent[$i] == $limit) { push @avgs, sprintf "%.16f", sum(@data[$start..$i]) / ($i+1 - $start); if ($limit == 100) { print join("\t", @avgs), "\n"; @avgs = (); $limit = 10; $start = $i+1; } else { $limit += 10; $start = $i+1; } } } else { push @avgs, sprintf "%.16f", sum(@data[$start..$i-1]) / ($i - $start); $limit += 10; $start = $i; } }