in reply to Reaped: count total number of occurrence in all files
Hello umaykulsum, one problem I see with your code is that while (<>) shifts (removes) the arguments from @ARGV. So when you are done reading, the size of @ARGV is 0. You can save the count before reading: my $file_count = @ARGV;
Another issue is that single quote prevent interpolation. Try print '\t\s';, you'll see that you don't get a tab and a space, but the string \t\s. You want to use double quotes instead. You either want to split on literal string, like "\t " or use a pattern in a regex like /\t\s/
You can optimize your code by doing more work in one loop (untested):
while (<>) { chomp; my ( $key, $value ) = split /\t\s/, $_; # Edited thanks to Anomalous +Monk $compare{$key}{count}++; $compare{$key}{sum} += $value; if ($file_count == $compare{$key}{count}) { print "$key: ", $compare{$key}{sum}; } }
Edit: "\t\s" doesn't work, see AnomalousMonk's answer below :)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: count total number of occurrence in all files
by AnomalousMonk (Archbishop) on May 09, 2016 at 13:45 UTC | |
by Eily (Monsignor) on May 09, 2016 at 15:35 UTC |