use strict; use warnings; my %table; my %sizes; for ( # SELECT qty, size, price [ 100, 1, 43 ], [ 250, 1, 52 ], [ 100, 2, 45 ], [ 250, 2, 55 ], [ 100, 3, 50 ], [ 250, 3, 56 ], [ 200, 4, 55 ], [ 250, 5, 61 ], ) { my ($qty, $size, $price) = @$_; $table{$qty}{$size} = $price; $sizes{$size} = 1; } my @sizes = sort {$a <=> $b} keys %sizes; print '', "\n"; print ''; print ''; print ''; print '', "\n"; print ''; print ''; for my $size (@sizes) { print ""; } for my $qty (sort { $a <=> $b } keys %table) { print ''; print ""; for my $size (@sizes) { print ''; } print '', "\n"; } print '
Sizes
QTY$size
$qty', (defined $table{$qty}{$size} ? "\$$table{$qty}{$size}" : ' '), '
', "\n";