2009-12-22 1 views

ответ

4

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

print scalar grep { defined $_ } values %hash 
+0

Несомненно, вы имеете в виду 'values% hash'. – darch

+0

Конечно, да. Спасибо, что поймали его :) – hobbs

+0

yeap, это именно то, что мне нужно! – Alexandr

8
undef($hash{"a"}); 

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

$hash{"a"}=undef; 

Так вы добавляете ключ 'а' со значением UNDEF. Для удаления значения из хеша используйте «delete».

delete $hash{"a"}; 

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

+0

Извините за то, что я не описателен в своем вопросе, теперь я думаю, это более понятно. Спасибо. – Alexandr

2
undef $hash{$key}; 

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

print "E" if exists $hash{$key}; # will print E 
print "D" if defined $hash{$key}; # will not print D