use strict; use warnings; my @results = ( [1, 1 , 1], [2, 1 , 2], [3, 1 , 3], [4, 1 , 4], [1, 2 , 5], [2, 2 , 6], [3, 2 , 7], [4, 2 , 8], [2, 3 , 9], [4, 3 , 10], [1, 4 , 11], [2, 4 , 12], [4, 4 , 13], [3, 5 , 14] ); my %table; my %cols; foreach my $row (@results) { $table{$row->[1]}->{$row->[0]} = $row->[2]; # track the columns separate $cols{$row->[0]}++; } my @cols = sort { $a <=> $b } keys %cols; # print table headings print " |"; foreach (@cols) { printf(" p_%-2d |",$_) } print "\n" . ("-" x (7 * (@cols + 1))) . "\n"; # now print rows foreach my $row (sort { $a <=> $b } keys %table) { printf(" v_%-2d |", $row); foreach my $col (@cols) { if (defined $table{$row}->{$col}) { printf(" s_%-2d |", $table{$row}->{$col}); } else { print " |" } } print "\n"; }
In reply to Re: Create a table from a matrix
by ruzam
in thread Create a table from a matrix
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |