【发布时间】:2019-06-07 03:28:12
【问题描述】:
我正在填充这样的数据结构:-
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 of 100。在散列结构的上下文之外拼接数组很容易,但是当数组嵌入到大散列中时,我很难操作它。
【问题讨论】:
标签: perl