#!/usr/bin/perl use strict; my ($p, $r, $v); my (%data, %products, %reps, @reps); #iterate over data and store in hash while() { chomp($_); ($r, $p, $v) = split(" ", $_); $data{$p}->{$r} = $v; $products{$p} = 1; $reps{$r} = 1; @reps = sort keys %reps; } # start formatting output print " " x 10; foreach (sort keys %reps) { print "$_", " " x 4; } print "\n"; #iterate over products foreach (sort keys %products) { print "$_"; # iterate over products for( my $i = 0; $i < scalar @reps; $i++) { # see if rep has that product and print if it does if( exists($data{$_}->{$reps[$i]}) ) { print " " x 3, " " x ($i * 8), " $data{$_}->{$reps[$i]}"; } } print "\n"; } exit; __DATA__ rep1 product1 2 rep1 product2 2 rep2 product3 3 rep3 product4 4 rep3 product5 5