#!/usr/bin/perl -wl use strict; use Data::Dumper; my @matrix = ( [ qw(ab cd ef gh)], [ qw(ij kl mn op)], [ qw(qr st uv wx)] ); my @transpose; for my $aref (@matrix) { my $i = 0; push @{$transpose[$i++]}, $_ for @$aref; } print Dumper(@matrix); print Dumper(@transpose); __END__