📜  Perl 哈希

📅  最后修改于: 2022-05-13 01:55:13.007000             🧑  作者: Mango

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 assigning 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
# individual 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'}";


Perl
# 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";


Perl
# 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";


输出:
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函数从哈希中获取所有键的列表。

例子:

Perl

# 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函数用于获取所有值的列表。

例子:

Perl

# 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