Я пытаюсь удалить значения из хэша массивов хэшей, которые я создал с помощью следующего кода:
while ((my $Genotype1, my $Fitness1) = each (%Normalisedfithash)) {
while ((my $Parent1A, my $TallyP1) = each(%P1Tallyhash)) {
my $ParentTally = 0;
my $SecondParent = {
Parent2 => $Parent1A,
Tally => $ParentTally,
};
push @{ $StoredParentshash{$Genotype1}}, $SecondParent;
Я пытался удалить значения из %StoredParentshash
, где Tally
равно нулю. (У меня есть дополнительный код, который обновляет Tally
, но некоторые из них не обновляются, и я хочу, чтобы они были удалены из хэша).
Я написал следующее:
for my $Parent (keys %StoredParentshash) {
my $aref1 = $StoredParentshash{$Parent};
for my $hashref1 (@$aref1) {
my $Tally = $hashref1->{'Tally'};
if ($Tally == 0){
delete $hashref1->{'Tally'};
delete $hashref1->{'Parent2'};
}
}
}
Этот код удаляет данные, но когда я использую Data::Dumper
, структура, которую я возвращаю, выглядит так:
'7412' => [
{},
{
'Tally' => 1,
'Parent2' => '2136'
},
{},
{},
{},
Как я могу полностью удалить ключи, где Tally
равно нулю, вместо того, чтобы оставить {}
?
Спасибо!