Как мне определить значение хеш-ключа в Perl? - PullRequest
4 голосов
/ 22 декабря 2009

Я хотел бы знать, как отменить определение значения хеш-ключа в Perl. Может ли кто-нибудь исправить мой код?

#!/usr/bin/perl

use strict; 
use warnings;
my %hash;


undef($hash{"a"});
undef($hash{"b"});
print scalar values %hash; # i need here 0
print scalar keys %hash; # and here 2

Ответы [ 3 ]

8 голосов
/ 22 декабря 2009
undef($hash{"a"});

эквивалентно

$hash{"a"}=undef;

Итак, вы добавляете ключ 'a' со значением undef. Чтобы удалить значение из хэша, используйте «delete».

delete $hash{"a"};

Невозможно иметь разные размеры «ключей» и «значений» для одного и того же хэша. Вы можете использовать grep для фильтрации нежелательных элементов.

4 голосов
/ 22 декабря 2009

Другой ответ на вопрос об определенности и существовании очень хороший, но если вы на самом деле делаете хотите узнать количество определенных значений, вы всегда можете сделать

print scalar grep { defined $_ } values %hash
2 голосов
/ 09 апреля 2013
undef $hash{$key};

это отменит значение для этого ключа:

print "E" if exists $hash{$key};    # will print E
print "D" if defined $hash{$key};   # will not print D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...