perl - Perl 中的哈希和智能匹配运算符

标签 perl match operator-keyword hash

对于我必须为作业编写的程序。我被告知要使用智能匹配运算符或哈希。我的问题是,无论我在教科书或互联网上读到什么,我就是不明白它们是如何工作的或它们做什么的。我不认为有人可以简单地向我解释他们的功能?

作业的最后一部分是推断一个区域中独特物种的数量 - 我已经计算了该区域中有哪些物种,但我不知道如何计算物种总数。

例如,如果在一个很小的区域里有 4 只鸟:

2 Red Kite
1 Robin 
1 Duck

我知道总共有 4 种鸟,但我不知道如何计算出该特定区域有 3 种鸟。

最佳答案

我建议您使用哈希,它是一种可以使用字符串访问的数据结构。

您可以将哈希值与数组进行比较。

数组的每个元素都有一个索引和一个,因此@data元素的值对于索引 2$data[2] 。类似地,哈希的每个元素都有一个和一个,因此%bird_count元素的值 key Red Kite$bird_count{'Red Kite'} 。 (请注意使用大括号而不是中括号来访问哈希元素。)

@data 这样的数组可以使用整数访问,因此第三个元素是 $data[2] ,像 %bird_counts 这样的哈希值可以使用字符串访问,因此 Red Kites 的计数为 $bird_count{'Red Kite'} .

如果你有一个程序可以在观察到鸟类时对它们进行计数,它就可以做到

++$bird_count{'Red Kite'};

++$bird_count{'Robin'};

++$bird_count{'Red Kite'};

++$bird_count{'Duck'};

之后哈希将包含三个元素:$bird_count{'Red Kite'}将是2另外两个是 1 。尝试一下。

你可以通过计算哈希的数量来计算不同鸟的数量,所以

my $num_different_birds = keys %bird_count;

希望对您有所帮助。

关于perl - Perl 中的哈希和智能匹配运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206061/

相关文章:

operator-keyword - 负模运算符结果的目的是什么?

perl - 导出带模块的 Perl 脚本

html - 参数值在第一个空格处被截断(URL 的其余部分消失)

r - 如何匹配不正确的字符串并替换为正确的字符串

python - 如何在python中找到包含焦点词的字符串的最长匹配

Haskell 函数组合、(.)(.) 的类型及其呈现方式

perl - 如何在 Perl 中管理多个子进程?

perl - 如何在 Perl 字符串中转义类似代码的东西?

arrays - 确定数组/字符串中最大匹配序列的有效方法(在 Ruby 中)?

c++ ->> 在流中留下 simbolst 吗?