Perl哈希详细解读

哈希是一组键值对。 Perl存储哈希的元素, 以便它基于其键搜索值。哈希变量以"%"符号开头。
Perl要求哈希的键是字符串, 而值可以是任何
标量
。这些值可以是数字, 字符串或参考。如果将非字符串值用作键, 则会产生意外的结果。
哈希键必须唯一。如果将新的键值对添加到哈希中并且该键存在, 则其对应的值将被覆盖。
创建哈希
初始化哈希变量的方法有很多, 如下所示:
如下所示, 直接分配该值, 并将数据添加到现有哈希中。

$stud{'Comp'} = 45; $stud{'Inft'} = 42; $stud{'Extc'} = 35;

另一种方法是使用列表, 通过获取单个对将其转换为哈希。该对中的第一个元素用作键, 第二个元素用作值。
%stud = ('Comp', 45, 'Inft', 42, 'Extc', 35);

一种方法是使用
=>
指示键/值对, 如下所示:
%stud = ('Comp' => 45, 'Inft' => 42, 'Extc' => 35);

另一种执行相同操作的方法如下所示。在这里, 所有键都以连字符(-)开头, 因此在它们周围不需要加引号。仅当单词中没有空格时, 才能使用此方法构建哈希。
%stud = (-Comp => 45, -Inft => 42, -Extc => 35);

访问哈希元素
要从哈希中访问单个元素, 变量会以美元符号($)为前缀, 然后将元素键附加在变量名后的花括号中。
下面的示例说明了如上所述的所有哈希创建方法:
【Perl哈希详细解读】范例:
#!/usr/bin/perl# Initializing Hash1 by # directly assinging values $stud1 { 'Comp' } = 10; $stud1 { 'Inft' } = 20; $stud1 { 'Extc' } = 30; # printing elements of stud print "Printing values of Hash1\n" ; print "$stud1{'Comp'}\n" ; print "$stud1{'Inft'}\n" ; print "$stud1{'Extc'}\n" ; # Initializing Hash2 by taking # indiviual pairs %stud2 = ( 'Comp' , 15, 'Inft' , 18, 'Extc' , 22); # Extracting values using keys print "\nPrinting values of Hash2\n" ; print "computer = $stud2{'Comp'}" ; print "\ninft = $stud2{Inft}" ; print "\nextc = $stud2{'Extc'}\n" ; # Initializing Hash3 using '=> ' %stud3 = ( 'Comp' => 45, 'Inft' => 42, 'Extc' => 35); # printing elements of stud3 print "\nPrinting values of Hash3\n" ; print "$stud3{'Comp'}\n" ; print "$stud3{'Inft'}\n" ; print "$stud3{'Extc'}\n" ; # Initializing Hash4 using hyphen(-) %stud4 = ( -Comp => 5, -Inft => 15, -Extc => 25); # Printing elements of stud4 print "\nPrinting values of Hash4\n" ; print "$stud4{'-Comp'}\n" ; print "$stud4{'-Inft'}\n" ; print "$stud4{'-Extc'}" ;

输出如下:
Printing values of Hash1 10 20 30Printing values of Hash2 computer = 15 inft = 18 extc = 22Printing values of Hash3 45 42 35Printing values of Hash4 5 15 25

提取键和值
有时需要提取哈希的键和值以对其执行各种操作。诸如元素修改, 删除, 添加等操作。哈希允许使用内置函数来提取这些键和值。
可以使用以下方法从哈希表中获取所有键的列表:

功能。
语法:keys%HASH返回HASH中存在的所有键的数组
例子:
# Initializing Hash with Key-Value pairs %stud = ( 'Comp' => 45, 'Inft' => 42, 'Extc' => 35); # Extracting keys from hash @Key_array = keys %stud ; # Printing the extracted keys print "Keys are :\n" ; print "$Key_array[0]\n" ; print "$Key_array[1]\n" ; print "$Key_array[2]\n" ;

输出如下:
Keys are : Comp Extc Inft

同样, 价值观函数用于获取所有值的列表。
语法:values%HASH返回具有所有HASH值的数组
例子:
# Initializing Hash with Key-Value pairs %stud = ( 'Comp' => 45, 'Inft' => 42, 'Extc' => 35); # Extracting values from hash @value_array = values %stud ; # Printing the extracted values print "Values are :\n" ; print "$value_array[0]\n" ; print "$value_array[1]\n" ; print "$value_array[2]\n" ;

输出如下:
Values are : 45 35 42

    推荐阅读