Perl哈希详细解读

2021年3月10日16:11:11 发表评论 606 次浏览

哈希是一组键值对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);

访问哈希元素

要从哈希中访问单个元素, 变量会以美元符号($)为前缀, 然后将元素键附加在变量名后的花括号中。

下面的示例说明了如上所述的所有哈希创建方法:

范例:

#!/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
30

Printing values of Hash2
computer = 15
inft = 18
extc = 22

Printing values of Hash3
45
42
35

Printing 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

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: