Perl 语言提供的哈希的API 并不太多, 但是也很强大了。但是哈希可以转换为value数组进行操作, 数组的API 是非常强大的。 Perl 语言还内置了环境变量的哈希变量, 用户在脚本中获取环境变量的相关信息
1. 常用API
单独使用keys 和 vlaues 返回的数组是无序的, 因此返回的元素并不一定是一一对应的. 当使用完keys 之后马上使用values , 那么此时相同索引的key 和 value是一一对应的使用reverse 的时候需要注意, 需要保证value 也是唯一的, 否则会相同的value作为key时, 会随机覆盖,变成不可控.
哈希赋值语法格式示例
keys获取哈希所有的key,返回由key组成的数组@keys = keys %hash_name;values获取哈希所有的value, 返回由value组成的数组@values = values %hash_nameexists判断key 是否在哈希中存在, 存在返回1,否则返回空exists %hash_name{key}delete删除哈希中的元素,返回删除key对应的value$value = delete $hash_name{key}reverse颠倒哈希的key,value, 变成value-key 组合%hash_reverse = reverse %hash
2. 内置哈希
perl 语言内置了哈希%ENV, 此哈希存储了当前系统的环境变量可通过ENV 获取当前环境变量设置的key-value信息, 如: PATH: $ENV{PATH}; JAVA_HOME: $ENV{JAVA_HOME};
3. 综合示例
3.1 示例脚本
%char_hs = ( A
, 'a', B
, 'b', C
, 'c');
%ip_hs = (
"www.taobao.com" => "60.28.242.249",
"www.baidu.com" => "61.135.169.125",
);
print "\n#################### 1. 常用方法 ####################\n";
@keys1 = keys
%char_hs;
@keys2 = keys
%char_hs;
print "char_hs keys: @keys1 \n";
print "char_hs keys: @keys2 \n";
$c = exists
$char_hs{C
};
$d = exists
$char_hs{D
};
print "exists: c:$c, d:$d \n";
$del = delete $char_hs{B
};
@keys = keys
%char_hs;
print "delete: B -> $del, left: @keys \n";
%r_ip_hs = reverse
%ip_hs;
print "reverse: r_ip_hs \n";
while (my ($key, $val) = each
%r_ip_hs) {
print "$key -> $val \n";
}
$length = keys
%char_hs;
print "char_hs length: $length \n";
%char_hs = ();
$length = keys
%char_hs;
print "length after empty: $length \n";
print "\n#################### 2. 内置哈希 ####################\n";
$JAVA_HOME = $ENV{JAVA_HOME
};
$PATH = $ENV{PATH
};
print "ENV: JAVA_HOME=$JAVA_HOME, PATH=$PATH \n";
3.2 示例输出
#################### 1. 常用方法 ####################
char_hs keys: C B A
char_hs keys: C B A
exists: c:1, d:
delete: B -> b, left: C A
reverse: r_ip_hs
61.135.169.125 -> www.baidu.com
60.28.242.249 -> www.taobao.com
char_hs length: 2
length after empty: 0
#################### 2. 内置哈希 ####################
ENV: JAVA_HOME=, PATH=/home/zongf/soft/jdk/jdk1.8.0_152/bin:/home/zongf/soft/jdk/jdk1.8.0_152/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/zongf/soft/zongf/jars:/home/zongf/soft/zongf/tools:/home/zongf/soft/maven/apache-maven-3.3.9/bin:/home/zongf/soft/zongf/jars:/home/zongf/soft/zongf/tools:/home/zongf/soft/maven/apache-maven-3.3.9/bin