http://www.perlmonks.org?node_id=1047817


in reply to Appending new column data to CSV file?

Instead of printing your hash values divided by $sum, change directly your hash and push a reference to it into a global array of hashes. Once you have readd all your files, use that data structure to print your data structure in the required format.

$_ = $_/$sum foreach (values %hash); push @AoH, \%hash;

It would probably be better to declare your hash within the "foreach my file (@ARGV)" loop to make sure you get a brand new and empty hash each time, but, on the other side, @AoH needs to be declared at the top of your program.

At the end, you just need to go through the @AoH structure to print your output. (Of course, this is just one possibility, there are quite a few others.)