Perl 哈希
Perl 哈希
哈希是 key/value 对的集合。
Perl中哈希变量以百分号 (%) 标记开始。
访问哈希元素格式:${key}。
以下是一个简单的哈希实例:
实例
#!/usr/bin/perl
%data = ('google', 'google.com', 'CodingDict', 'CodingDict.com', 'taobao', 'taobao.com');
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'CodingDict'} = $data{'CodingDict'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
执行以上程序,输出结果为:
$data{'google'}=google.com
$data{'CodingDict'}=google.com
$data{'taobao'}=google.com
创建哈希
创建哈希可以通过以下两种方式:
一、为每个 key 设置 value
$data{'google'} = 'google.com';
$data{'CodingDict'} = 'CodingDict.com';
$data{'taobao'} = 'taobao.com';
二、通过列表设置
列表中第一个元素为 key,第二个为 value。
%data = ('google', 'google.com', 'CodingDict', 'CodingDict.com', 'taobao', 'taobao.com');
也可以使用 => 符号来设置 key/value:
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
以下实例是上面实例的变种,使用 - 来代替引号:
%data = (-google=>'google.com', -CodingDict=>'CodingDict.com', -taobao=>'taobao.com');
使用这种方式 key 不能出现空格,读取元素方式为:
$val = $data{-google}
$val = $data{-CodingDict}
访问哈希元素
访问哈希元素格式:${key},实例如下:
实例
#!/usr/bin/perl
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'CodingDict'} = $data{'CodingDict'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
执行以上程序,输出结果为:
$data{'google'}=google.com
$data{'CodingDict'}=google.com
$data{'taobao'}=google.com
读取哈希值
你可以像数组一样从哈希中提取值。
哈希值提取到数组语法格式:@{key1,key2}。
实例
#!/uer/bin/perl
%data = (-taobao => 45, -google => 30, -CodingDict => 40);
@array = @data{-taobao, -CodingDict};
print "Array : @array\n";
执行以上程序,输出结果为:
Array : 45 40
读取哈希的 key 和 value
读取所有key
我们可以使用 keys 函数读取哈希所有的键,语法格式如下:
keys %HASH
该函数返回所有哈希的所有 key 的数组。
实例
#!/usr/bin/perl
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
@names = keys %data;
print "$names[0]\n";
print "$names[1]\n";
print "$names[2]\n";
执行以上程序,输出结果为:
taobao
google
CodingDict
类似的我们可以使用 values 函数来读取哈希所有的值,语法格式如下:
values %HASH
该函数返回所有哈希的所有 value 的数组。
实例
#!/usr/bin/perl
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
@urls = values %data;
print "$urls[0]\n";
print "$urls[1]\n";
print "$urls[2]\n";
执行以上程序,输出结果为:
taobao.com
CodingDict.com
google.com
检测元素是否存在
如果你在哈希中读取不存在的 key/value 对 ,会返回 undefined 值,且在执行时会有警告提醒。
为了避免这种情况,我们可以使用 exists 函数来判断key是否存在,存在的时候读取:
实例
#!/usr/bin/perl
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
if( exists($data{'facebook'} ) ){
print "facebook 的网址为 $data{'facebook'} \n";
}
else
{
print "facebook 键不存在\n";
}
执行以上程序,输出结果为:
facebook 键不存在
以上代码中我们使用了 IF...ELSE 语句,在后面的章节我们会具体介绍。
获取哈希大小
哈希大小为元素的个数,我们可以通过先获取 key 或 value 的所有元素数组,再计算数组元素多少来获取哈希的大小,实例如下:
实例
#!/usr/bin/perl
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
@keys = keys %data;
$size = @keys;
print "1 - 哈希大小: $size\n";
@values = values %data;
$size = @values;
print "2 - 哈希大小: $size\n";
执行以上程序,输出结果为:
1 - 哈希大小: 3
2 - 哈希大小: 3
哈希中添加或删除元素
添加 key/value 对可以通过简单的赋值来完成。但是删除哈希元素你需要使用 delete 函数:
实例
#!/usr/bin/perl
%data = ('google'=>'google.com', 'CodingDict'=>'CodingDict.com', 'taobao'=>'taobao.com');
@keys = keys %data;
$size = @keys;
print "1 - 哈希大小: $size\n";
# 添加元素
$data{'facebook'} = 'facebook.com';
@keys = keys %data;
$size = @keys;
print "2 - 哈希大小: $size\n";
# 删除哈希中的元素
delete $data{'taobao'};
@keys = keys %data;
$size = @keys;
print "3 - 哈希大小: $size\n";
执行以上程序,输出结果为:
1 - 哈希大小: 3
2 - 哈希大小: 4
3 - 哈希大小: 3
本文转自:http://codingdict.com/article/6802
Perl 哈希的更多相关文章
- Perl哈希%hash
哈希是 key/value 键/值对的集合. Perl中哈希变量以百分号 (%) 标记开始. 访问哈希元素格式:${key}. 以下是一个简单的哈希实例: 实例 #!/usr/bin/perl %da ...
- perl 哈希 连接符
#!/usr/bin/perl -w use strict; my $test_1 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; my $test_2 ...
- perl哈希嵌套和引用的使用
数组,哈希嵌套 数组,哈希的引用 1.哈希的嵌套和引用 %hash = ( 'group1', {'fruit', 'banana', 'drink', 'orange juice', 'vegeta ...
- Perl 变量:哈希变量
Perl 哈希变量哈希是 key/value 对的集合.Perl中哈希变量以百分号 (%) 标记开始.访问哈希元素格式:${key}. 1.创建哈希创建哈希可以通过以下两种方式: 1.为每个 key ...
- Perl 和 Python 的比较 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4662991&uid=608135 作为万年Perl 党表示最近开 ...
- hash 在 perl 中的用法(转载)
Perl的数据结构中最有趣的一个特性是哈希(hash),它使得在数据片段之间建立键-值(key-value)关联成为可能.虽然这些哈希要远远比普通系统中以数字索引的数组用途更广,但是往往也会使初学者不 ...
- perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)
https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...
- 8-Perl 哈希
1.Perl 哈希哈希是 key/value 对的集合.Perl中哈希变量以百分号 (%) 标记开始.访问哈希元素格式:${key}.以下是一个简单的哈希实例:#!/usr/bin/perl%data ...
- Perl中的哈希(四)
Perl中的哈希数据结构.相比较于数组,这种数据结构对于数据查找和统计更加方便. 一个特殊的哈希,%ENV,表示当前terminal下,通过setenv设置的variable的键值. 键:环境变量名, ...
随机推荐
- Codeforces 1105E 最大独立集 状态DP 中途相遇法
题意:你有一个字符串, 有两种操作,一种是改变字符串,一种是某个用户询问这个字符串,如果一个用户每次查询字符串的时候都是他的用户名,他就会高兴.问最多有多少个用户会高兴? 题意:容易发现,在两个1操作 ...
- php文件锁阻塞模式和非阻塞模式
1.阻塞模式(如果其它进程已经加锁文件,当前进程会等其它进程解锁后继续执行) <?php $handle = fopen('lock.txt', 'r'); //锁定 if(flock($han ...
- mybatis调用存储过程(@Select方式)
存储过程还不会写的同学可以参考我另一篇文章:https://www.cnblogs.com/liuboyuan/p/9375882.html 网上已经有很多用mybatis调用的教程了,但是大部分是x ...
- php phpword生成html页面
先说下需求:正常点击免责声明是下载的文件,根据用户需求是点击预览,所以这里利用phpword生成一个静态页面并进行预览.不多说,直接上代码附带类文件. 类文件:https://pan.baidu.co ...
- 存储emoji表情,修改字符集为utf8mb4
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; SET ch ...
- 【Linux】windows下编写的脚本文件,放到Linux中无法识别格式
注意:我启动的时候遇到脚本错误 » sh startup.sh -m standalone tanghuang@bogon : command not found : command not foun ...
- Shiro学习(9)JSP标签
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮. 导入标签库 Java代码 <%@taglib prefix="shiro&qu ...
- DesktopLoader服务程序
program DesktopLoader; //{$APPTYPE CONSOLE} uses Windows,WinSvc,ShellApi; var s:String; iDesktops,jD ...
- xshell突出显示集
xshell突出显示集(参考mobaxterm,直接拷贝过来不行,应该是xshell对正则表达式的支持不够好): Underline: \b(http(s)?://[A-Za-z0-9_./& ...
- Dijkstra Algorithm 迪克特斯拉算法--Python
迪克斯拉特算法: 1.找出代价最小的节点,即可在最短时间内到达的节点: 2.更新节点的邻居的开销: 3.重复这个过程,直到图中的每个节点都这样做了: 4.计算最终路径. ''' 迪克斯特拉算法: 1. ...