В стороне: Вы можете упростить свой код с помощью:
my @cols = split /,/;
В вашем назначении $array[$col][$row]
используется необычный порядок индексации;это усложняет жизнь.С вашим порядком присваивания столбцов / строк в массиве, я не думаю, что есть более простой способ сделать это.
Альтернатива: Если бы вы перевернулиПорядок индексов в массиве ($array[$row][$col]
), вы можете подумать об использовании:
use strict;
use warnings;
my @array;
for (my $j = 0; <>; $j++) # For testing I used <> instead of <IN>
{
chomp;
$array[$j] = [ split /,/ ];
shift @{$array[$j]}; # Remove the line label
}
for (my $i = 0; $i < scalar(@array); $i++)
{
for (my $j = 0; $j < scalar(@{$array[$i]}); $j++)
{
print "array[$i,$j] = $array[$i][$j]\n";
}
}
Пример данных
label1,1,2,3
label2,3,2,1
label3,2,3,1
Пример вывода
array[0,0] = 1
array[0,1] = 2
array[0,2] = 3
array[1,0] = 3
array[1,1] = 2
array[1,2] = 1
array[2,0] = 2
array[2,1] = 3
array[2,2] = 1