SOURCE HTML: http://socvista.com/bbs/redirect.php?fid=71&tid=913&goto=nextnewset
09:06
-- hash概况
hash听到很多,但是一直没有研究。我就现学现卖了。
其实hash可以看作是一个array,只不过他不是用数字来index的,而是用字符串来index,这个字符串可以叫做key,而对应的取值叫做value。(key-value这个搭配倒是经常看到。所以一说就明白了是吧)。
-- 为什么需要hash
主要的应用场合有:域名-IP地址(查询表),单词-出现频率(查询表),姓名-驾驶证号码(查询表)等等。利用一个字符串key我们可以查询相对不容易记忆的value。
-- 访问hash元素
语法:$hash{ $some_key };
$family_name{"fred"} = "flintstone";
-- 整个hash的表示
%hash_name
-- 将hash转换成list
@array_name = %hash_name;
-- hash赋值
%hash_name = ("key1", value1, "key2", value2, ...);
-- hash key-value倒置
%inversi_hash = reverse %hash_name;
倒置后,原来的key-value 变成 value-key。也就是用原来的value作为key,而原来的key成为了value。
-- 胖逗号
在perl语法里=>符号和,是等价的,因此叫做胖逗号。在hash赋值的时候特别有用。比如
my %last_name = (
"kobe" => "fan",
"li" => "qiu",
"larry" => undef,
);
-- hash函数
my %hash = ("a"=>1, "b"=>2, "c"=>3);
my @k = keys %hash; # 返回key串
my @v = values %hash; # 返回value串
if (%hash_name) {}; # 如果hash包含一个以上k-v组合则布尔值为true。
while (($key, $value) = each %hash) { print "$key => $value\n";} # each函数将hash的k-v组合逐个读出
foreach $key (sort keys $hash) {} # sort函数将keys进行排序
if (exists $book{"dino"}) {print "dino key exists\n"}; # exists 函数判断某个key是否存在
delete $books{$person}; # 删除$person这个key