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的键值. 键:环境变量名, ...
随机推荐
- rabbitmq AmqpClient 使用Topic 交换机同一个channel 同时多个队列 ,多个交换机,C++代码示例
// 消息发送 bool PublishExchangeTopicMulti(const std::string &strUri) { AmqpClient::Channel::ptr_t c ...
- eclipse启动Failed to load the JNI shared library
由于安装jdk安装了多个版本,用其他开发工具,某天再打开eclipse时弹出“Failed to load the JNI shared library jvm.dll” 原因:eclipse的版本与 ...
- Hive速览
一.概述 Hive由Facebook开源,是一个构建在Hadoop之上的数据仓库工具 将结构化的数据映射成表 支持类SQL查询,Hive中称为HQL 1.读模式 2.Hive架构 3.使用Hive的原 ...
- 多媒体查询 @media 报错
You may not @extend an outer selector from within @media.You may only @extend selectors within the s ...
- css创建
CSS 创建 当读到一个样式表时,浏览器会根据它来格式化 HTML 文档. 如何插入样式表 插入样式表的方法有三种: 外部样式表(External style sheet) 内部样式表(Interna ...
- luoguP1288 取数游戏II [博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
- CTSC2019
(upd:随机立方体AC) 太菜了只会部分分.以后慢慢补坑吧…… 随机立方体: 30分: 正常人都能想到的的转移状态(我的确是弱智),从大往小填数,记录有多少个极大值点和三个方向上各占了多少.转移可以 ...
- tornado的安装
centos6.4 安装tornado框架连接工具 xshell 工具 1.如果在windows下有tornado的安装包首先现在上装到linux下的上传工具:yum install lrzsz ...
- win 解除鼠标右键关联
点击「开始」→「运行」→「输入Regedit」→「确定」,打开注册表编辑器,找到子键: 「HKEY_CLASSES_ROOT\*\shellex\UltroEdit」,删除此项即可:
- npm和cnpm的安装(window)
一:安装node.js 1.进入https://nodejs.org/en/中下载自己电脑相对应的node.js. 2.将下载下来的node.js进行安装. 3.利用管理员身份打开cmd,在里面输入n ...