sub pivot { my (@srcgrid) = @_; my $max_row = $#srcgrid; my $max_col = get_max_cols(@srcgrid); my @pivoted; for my $col (0..$max_col) { my @new_row; for my $row (0..$max_row) { my $value; if (defined $srcgrid[$row][$col]) { $value = $srcgrid[$row][$col]; } else { $value = ''; } push @new_row,$value; } push @pivoted,\@new_row; } return @pivoted; } sub get_max_cols { my (@grid) = @_; my $max= 0; for my $rowref (@grid) { my @row = @$rowref; if ($max < $#row) { $max = $#row; } } return $max; }