1. 基本的哈希赋值格式:$domain{"groad"} = "good"; $domain 是个哈希表,"groad" 是个键,"good" 是该键所对应的值。
2. 整个哈希:
使用 % 作为哈希表的前缀表示指代整个哈希。如下例:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
my %hash = ("groad", 100, "sina", 90, "sohu", 80);
my @key = keys %hash;
my @val = values %hash;
foreach (@key) {
print "$_\t";
}
print "\n";
foreach (@val) {
print "$_\t"
}
print "\n";
运行输出: ./keys_values.pl
sina sohu groad
90 80 100 3. 哈希松绑:
将整个哈希复制给一个数组称为哈希松绑,松绑时哈希自动转换为一些简单的 键/值 对。如下所示:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
my %hash = ("groad", 100, "sina", 90, "sohu", 80);
@array = %hash;
foreach (@array) {
print "$_ "
}
print "\n";
运行输出:
# ./release_has.pl
sina 90 sohu 80 groad 100 4. 一种美观的给哈希赋值的方法:
像上面的 my %hash = ("groad", 100, "sina", 90, "sohu", 80); 这种赋值方法并不易区分键值对。下面使用带有胖箭头( => ) 的赋值方法使赋值形式更加的整齐美观:
[Perl] 纯文本查看 复制代码 my %hash = (
"groad" => 100,
"sina" => 90,
"sohu" => 80
);
5. keys 和 values 函数:
keys 函数能返回哈希的键列表。
values 函数能返回值列表。
如果哈希表里没有任何成员,那么这两个函数都返回空列表。
测试代码:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
my %hash = ("groad" => 100, "sina" => 90, "sohu" => 80);
my @key = keys %hash;
my @val = values %hash;
foreach (@key) {
print "$_\t";
}
print "\n";
foreach (@val) {
print "$_\t"
}
print "\n";
运行输出:# ./keys_values.pl
sina sohu groad
90 80 100 6. each 函数
使用 each 函数可以列出哈希的每个 键/值对 。常见的用法是每次获取一个键值对,比如:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
my %hash = ("groad" => 100, "sina" => 90, "sohu" => 80);
while ( ($key, $value) = each %hash ) {
print "$key => $value\n";
}
运行输出:# ./each.pl
sina => 90
sohu => 80
groad => 100 注意,each 返回的 键/值对 是乱序的,但键和值总是会相对应的。
7. exists 和 delete 函数:
exists 函数可以检查哈希中是否有某个键值,在的话返回真,否则返回假。
delete 函数可以从哈希中删除指定的键及其对应的值。假如没有这样的键,那么会直接结束,而不会发出任何警告和错误信息。
测试代码:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
my %hash = ("groad" => 100, "sina" => 90, "sohu" => 80);
if (exists $hash{"groad"}) {
print "Gorad is exist.\n";
}
if (exists $hash{"163"}) {
print "Netease is exist.\n";
}
else {
print "Net ease is not exist.\n";
}
delete $hash{"groad"};
if (exists $hash{"groad"}){
print "groad is exist.\n";
}
else {
print "groad is not exist.\n";
}
运行输出:# ./exist_del.pl
Gorad is exist.
Net ease is not exist.
groad is not exist. 8. %ENV 哈希:
系统的环境变量在 Perl 中可以被感知,它们被存储在一个内置的哈希里 %ENV 。如下所示:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
print "HOME is $ENV{HOME}\n";
print "PATH is $ENV{PATH}\n";
运行输出:# ./env.pl
HOME is /root
PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/etc/alternatives/gem-bin |