use strict; use warnings; use Data::Dumper; my %teams = (); while ( ) { chomp; my ($team, $points, $tallies, $scores, $metrics) = split; push @{ $teams{$team}->{points} }, $points; push @{ $teams{$team}->{tallies} }, $tallies; push @{ $teams{$team}->{scores} }, $scores; push @{ $teams{$team}->{metrics} }, $metrics; } my $dd = Data::Dumper->new([\%teams], [qw{*teams}]); print $dd->Dumpxs(); __END__ packers 4 40 400 4000 patriots 6 62 436 3987 colts 8 74 892 7666 bears 9 88 912 9550 packers 3 44 410 4200 patriots 7 66 510 3800 colts 10 77 910 7000 bears 11 88 1010 9410 packers 2 36 385 4105 patriots 4 58 500 3700 colts 9 75 900 7500 bears 8 95 1017 10200 packers 4 37 388 4378 patriots 6 55 440 4987 colts 8 80 843 8210 bears 9 101 890 9998 packers 7 40 400 4000 patriots 11 62 436 3987 colts 7 74 892 7666 bears 12 88 912 9550 packers 2 48 422 4320 patriots 3 54 510 3765 colts 6 72 812 7500 bears 7 86 899 9430