:あなたがして、あなたのコードを簡素化することができます。
$array[$col][$row]
へ
my @cols = split /,/;
あなたの割り当ては異例の添字順序を使用しています。それは人生を複雑にする。 配列内の列/行の割り当て順序では、より単純な方法はないと思います。
代替:あなたは配列($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
ファイルの値はどのようなタイプですか?文字列がある場合(おそらく引用符など)、Text :: CSVモジュールを使う方がよいでしょう。それらが純粋な数である場合、あなたは単純な分割でOKかもしれません。 –
意図的に行を配列の2番目のインデックスにするのか、それとも誤植ですか? –