in reply to Transpose a file

If I understand you are interested in something like Rotating an array

update maybe you'll find this useful

use strict; use warnings; my @aoa; my $row=0; while (<DATA>){ chomp; push @{$aoa[$row]}, split /\s+/; $row++; } foreach my $ar (@aoa){ for my $index (0..$#aoa){ print +(shift @{$aoa[$index]} || '--')," " ; } }continue{print "\n"} __DATA__ A1 A2 A3 B1 B2 B3 C1 C2 C3 d1 d2 d3 d4 #OUTPUT A1 B1 C1 d1 A2 B2 C2 d2 A3 B3 C3 d3 -- -- -- d4

L*

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

Replies are listed 'Best First'.
Re^2: Transpose a file
by Lotus1 (Vicar) on May 09, 2016 at 14:21 UTC

    Hello Discipulus

    I found your method of creating the array of arrays

    push @{$aoa[$row]}, split /\s+/

    harder to follow than what the OP has. I tried them side by side and got the same results with both.

    use strict; use warnings; use Data::Dumper; my @aoa1; my @aoa2; my $row=0; while (<DATA>){ chomp; push @{$aoa1[$row]}, split /\s+/; $row++; push @aoa2, [ split /\s+/ ]; } print Dumper \@aoa1; print Dumper \@aoa2; __DATA__ A1 A2 A3 B1 B2 B3 C1 C2 C3