Я заполняю структуру данных следующим образом: -
push @{$AvailTrackLocsTop{$VLayerName}}, $CurrentTrackLoc;
Где $ VLayerName - строка типа m1, m2, m3 и т. Д., А $ CurrentTrackLoc - просто десятичное число.Если я использую Data :: Dumper для печати содержимого хеша после его полного заполнения, он показывает, что я ожидаю, например: -
$VAR1 = {
'm11' => [
'0.228',
'0.316',
'0.402',
'0.576',
'0.750',
'569.458',
'569.544',
'569.718',
'569.892'
]
};
Теперь мне нужно эффективно склеить сохраненный список десятичных чисел,Я могу удалить записи, например, так: -
for (my $i = $c; $i <= $endc; $i++) {
delete $AvailTrackLocsTop{$VLayerName}->[$i];
}
Результатом, как и ожидалось, является набор "undef" записей, где раньше существовали числа, например: -
$VAR1 = {
'm11' => [
undef,
undef,
undef,
undef,
'0.750',
'569.458',
'569.544',
'569.718',
'569.892'
]
};
НоКак я могу удалить записи undef так, чтобы вместо этого я увидел что-то подобное?
$VAR1 = {
'm11' => [
'0.750',
'569.458',
'569.544',
'569.718',
'569.892'
]
};
Важно отметить, что удаления могут быть где угодно в массиве, например, как индексы 33 и 99 из 100.легко склеивать массивы вне контекста хеш-структуры, но я изо всех сил пытаюсь манипулировать массивом, когда он встроен в большой хеш.