Я предполагаю, что ваш массив состоит из массива массивов ...
Ни Awk, ни Sed, ни Perl не имеют многомерных массивов.Однако их можно эмулировать в Perl, используя массивы массивов.
$a[0]->[0] = xx;
$a[0]->[1] = yy;
[...]
$a[0]->[164] = zz;
$a[1]->[0] = qq;
$a[1]->[1] = rr;
[...]
$a[164]->[164] = vv;
Имеет ли это смысл?
Я называю строку $x
и столбцы $y
, поэтомуэлемент в вашем массиве будет $array[$x]->[$y]
.Это хорошо?
Хорошо, ваши имена столбцов будут в строке $array[0]
, поэтому, если мы найдем значение меньше пяти в $array[$x]->[$y]
, мы знаем, что имя столбца находится в $array[0]->[$y]
.Это хорошо?
for my $x (1..164) { #First row is column names
for my $y (0..164) {
if ($array[$x]->[$y] <= 5) {
$array[$x]->[$y] = $array[0]->[$y];
}
}
}
Я просто просматриваю все строки, и для каждой строки, все столбцы и проверяю значение.Если значение меньше или равно пяти, я заменяю его именем столбца.
Надеюсь, я не делаю вашу домашнюю работу за вас.