Prev: FAQ 5.23 I still don't get locking. I just want to increment the number in the file. How can I do this?
Next: Pod errors: Unterminated S<...> sequence
From: PerlFAQ Server on 18 Apr 2010 12:00 This is an excerpt from the latest version perlfaq4.pod, which comes with the standard Perl distribution. These postings aim to reduce the number of repeated questions as well as allow the community to review and update the answers. The latest version of the complete perlfaq is at http://faq.perl.org . -------------------------------------------------------------------- 4.59: How can I know how many entries are in a hash? (contributed by brian d foy) This is very similar to "How do I process an entire hash?", also in perlfaq4, but a bit simpler in the common cases. You can use the "keys()" built-in function in scalar context to find out have many entries you have in a hash: my $key_count = keys %hash; # must be scalar context! If you want to find out how many entries have a defined value, that's a bit different. You have to check each value. A "grep" is handy: my $defined_value_count = grep { defined } values %hash; You can use that same structure to count the entries any way that you like. If you want the count of the keys with vowels in them, you just test for that instead: my $vowel_count = grep { /[aeiou]/ } keys %hash; The "grep" in scalar context returns the count. If you want the list of matching items, just use it in list context instead: my @defined_values = grep { defined } values %hash; The "keys()" function also resets the iterator, which means that you may see strange results if you use this between uses of other hash operators such as "each()". -------------------------------------------------------------------- The perlfaq-workers, a group of volunteers, maintain the perlfaq. They are not necessarily experts in every domain where Perl might show up, so please include as much information as possible and relevant in any corrections. The perlfaq-workers also don't have access to every operating system or platform, so please include relevant details for corrections to examples that do not work on particular platforms. Working code is greatly appreciated. If you'd like to help maintain the perlfaq, see the details in perlfaq.pod. |