use Algorithm::Loops qw(MapCar); my @matrix = ( [ qw(ab cd ef gh)], [ qw(ij kl mn op)], [ qw(qr st uv wx)] ); my @transposed = MapCar {[@_]} @matrix; print join( " ", @$_), $/ for @transposed;