本文概述
- Perl哈希访问
- Perl哈希索引
- Perl按键排序哈希
- Perl按其值对哈希进行排序
- Perl哈希键的存在
- Perl哈希片
- Perl哈希创建空哈希
- Perl添加哈希元素
- Perl删除哈希元素
- Perl删除与未定义哈希元素
哈希是使用我的关键字声明的。变量名称以(%)符号开头。
哈希就像数组, 但是它们之间有两个区别。第一个数组是有序的, 但哈希是无序的。其次, 使用其值访问哈希元素, 而使用其索引值访问数组元素。
哈希中不允许使用重复的键, 这会使键值在哈希值内唯一。每个键都有其单个值。
句法:
my %hashName = ( "key" =>
"value";
)
Perl哈希访问要访问哈希的单个元素, 在变量名称前使用($)号。然后将关键元素写在{}中。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra");
print"$capitals{'India'}\n";
print"$capitals{'South Korea'}\n";
print"$capitals{'USA'}\n";
print"$capitals{'Australia'}\n";
输出
New DelhiSeoulWashington, D.C.Canberra
Perl哈希索引哈希使用$ key和$ value变量进行索引。所有的哈希值将使用while循环打印。在while循环运行时, 将打印每个变量的值。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra");
# LOOP THROUGH ITwhile (($key, $value) = each(%capitals)){print $key.", ".$value."\n";
}
输出
Australia, CanberraIndia, New DelhiUSA, Washington, D.C.South Korea, Seoul
Perl按键排序哈希你可以使用其键元素或值元素对哈希进行排序。 Perl为此提供了sort()函数。在此示例中, 我们将按其关键元素对哈希进行排序。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra");
# Foreach loopforeach $key (sort keys %capitals) {print "$key: $capitals{$key}\n";
}
输出
Australia: CanberraIndia: New DelhiSouth Korea: SeoulUSA: Washington: D.C.
查看输出, 所有关键元素均按字母顺序排序。
Perl按其值对哈希进行排序在这里, 我们将按其值元素对哈希进行排序。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "UK"=>
"London");
# Foreach loopforeach $value (sort {$capitals{$a} cmp $capitals{$b} }keys %capitals){print "$value $capitals{$value}\n";
}
输出
UK LondonIndia New DelhiSouth Korea SeoulUSA Washington D.C.
查看输出, 所有值元素均按字母顺序排序。
Perl哈希键的存在从不存在的哈希访问键/值对将返回错误或警告。为了防止这种情况, 你可以使用exists()函数检查哈希中是否存在键。如果密钥存在, 则返回true。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra");
if (exists($capitals{'India'})){print "found the key\n";
}
输出
found the key
上面的输出显示” Indis” 键存在于” capitals” 哈希中。
Perl哈希片如果只需要哈希中的某些值, 则可以提取它们并将其显示为值列表。
为此, 你必须将它们存储在带有@前缀的数组变量中, 因为它们将返回值列表, 然后打印它们。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra");
@array = @capitals{India, USA, Australia};
print "@array\n";
输出
New Delhi Washington, D.C. Canberra
Perl哈希创建空哈希空散列的大小始终为0。
在此示例中, 我们首先创建了一个大小为3的哈希, 然后创建了一个大小为0的空哈希。
my %first = ('john'=>
9853147320, 'jose'=>
7823654028, 'janie', =>
'8850279610');
print 'hash size: ', scalar keys %first;
print "\n";
#creating emptyempty hashmy %empty=();
print 'hash size: ', scalar keys %empty;
输出
hash size: 3hash size: 0
Perl添加哈希元素通过将新的键值对声明为hash变量中的单个元素, 可以将它们添加到hash中。
在这里, 我们添加了两个键值对, [德国-柏林]和[英国-伦敦]。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra");
while (($key, $value) = each(%capitals)){print $key.", ".$value."\n";
}#adding new element$capitals{Germany} = Berlin;
$capitals{UK} = London;
# Printing new hashprint "\n";
while (($key, $value) = each(%capitals)){print $key.", ".$value."\n";
}
【Perl哈希用法详解】输出
UK, LondonAustralia, CanberraGermany, BerlinIndia, New DelhiUSA, Washington D.C.South Korea, Seoul
Perl删除哈希元素要删除哈希元素, 请使用delete()函数。
在这里, 我们删除了在上一个示例中添加的两个键值对。
my %capitals = ("India"=>
"New Delhi", "South Korea" =>
"Seoul", "USA"=>
"Washington, D.C.", "Australia"=>
"Canberra""Germany "=>
" Berlin"" UK "=>
"London");
while (($key, $value) = each(%apitals)){print $key.", ".$value."\n";
}#removing elementdelete($capitals{Germany});
delete($capitals{UK});
# Printing new hashprint "\n";
while (($key, $value) = each(%capitals)){print $key.", ".$value."\n";
}
输出
Australia, CanberraIndia, New DelhiUSA, Washington D.C.South Korea, Seoul
Perl删除与未定义哈希元素删除:在删除中, 键值对将从哈希中删除。
句法:
delete($hash{$key});
undef:在undef中, 值将是不确定的, 但键将保留在哈希中。
句法:
Undef $hash{$key};
在下面的示例中, 我们创建了一个哈希” 等级” 。我们将一一取消定义并从哈希中删除所有键值。在取消定义键时, 仅会显示其值, 在删除键时, 它将与值一起从哈希中完全删除。
这样, 最后所有哈希元素都将被删除。
# creating hash$rank{'John'} = '5 ';
$rank{'Ana'} = '7 ';
$rank{'Jiyaa'} = '3 ';
$rank{'Jassi'} = '1 ';
# printing all elements in the hashprint "before:\n";
print %rank;
print"\n";
# undefining John in the hashprint "\nundefine John\n";
undef$rank{'John'};
print %rank;
print"\n";
# deleting the 'John' key the in hash elementprint "\nremove John\n";
delete($rank{'John'});
print %rank;
print"\n";
# undefining Ana in the hashprint "\nundefine Ana\n";
undef$rank{'Ana'};
print %rank;
print"\n";
# deleting the 'Ana' key the in hash elementprint "\nremove Ana\n";
delete($rank{'Ana'});
print %rank;
print"\n";
# undefining Jiyaa in the hashprint "\nundefine Jiyaa\n";
undef$rank{'Jiyaa'};
print %rank;
print"\n";
# deleting the 'Jiyaa' key the in hash elementprint "\nremove Jiyaa\n";
delete($rank{'Jiyaa'});
print %rank;
print"\n";
# undefining Jassi in the hashprint "\nundefine Jassi\n";
undef$rank{'Jassi'};
print %rank;
print"\n";
# deleting the 'Jassi' key the in hash elementprint "\nremove Jassi\n";
delete($rank{'Jassi'});
print %rank;
输出
before:John5 Jassi1 Jiyaa3 Ana7undefine JohnJohnJassi1 Jiyaa3 Ana7remove JohnJassi1 Jiyaa3 Ana7undefine AnaJassi1 Jiyaa3 Anaremove AnaJassi1 Jiyaa3undefine JiyaaJassi1 Jiyaaremove JiyaaJassi1undefine Jassi Jassiremove Jassi
推荐阅读
- Perl最新面试题全集
- Perl创建Excel文件
- Perl goto语句
- Perl for循环语句
- Win10系统无法打开微博链接怎样办?
- Win10系统如何创建Xbox Live帐户?
- Win10系统如何重置网络设置?
- Win10系统如何查看cpu型号?
- Win10激活系统失败出错代码0x8007007B怎样处理?