#!/usr/bin/env perl use strict; use warnings; my %data; while (<DATA>) { next if /ZIP/; chomp; my ($zip, $money, $date, $id) = split /\s*,\s*/; $data{$zip}{total} += $money; $data{$zip}{date} = $date; $data{$zip}{id} = $id; } my @dates; for my $zip (keys %data) { push @dates, $data{$zip}{date} if exists $data{$zip}{date}; } print "ZIP"; for (@dates) {print ",Total($_)"} print ",ID\n"; for my $zip (keys %data) { print "$zip, "; for (@dates) { if ($data{$zip}{date} eq $_) { print "$data{$zip}{total},"; } else { print "0,"; } } print "$data{$zip}{id}\n"; } __DATA__ ZIP, Money, Date, ID 12345, 200, 11062000, C1234 12345, 50, 11062000, C1234 67890, 50, 11072000, D5555
prints:
ZIP,Total(11062000),Total(11072000),ID 12345, 250,0,C1234 67890, 0,50,D5555
This matches your desired output, based on the input example.
In reply to Re: Creating One Table From Several Hashes
by toolic
in thread Creating One Table From Several Hashes
by bryced1234
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |