use strict; use warnings; my @aoa; my $row=0; while (){ 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