in reply to Modifying array data during print

Sort of combining your attempt and Zaxo's solution (differs in that it constructs the hash differently; which is better depends on what you need these vars for later):
my %avgsHash; my @cols2 = map { tr/_/,/; $_ } @cols2; @avgsHash{ @cols2 } = map {to_decimal($_)} @avgs; print "Server,Statistic,Average\n"; printf("%s,%f\n", $_, $avgsHash{$_}) for @cols2;
Also note that commas don't need escaping in regex's. e.g. s/,/A/g and s/A/,/g will both work fine.