8-Perl 哈希
1.Perl 哈希
哈希是 key/value 对的集合。
Perl中哈希变量以百分号 (%) 标记开始。
访问哈希元素格式:${key}。
以下是一个简单的哈希实例:
#!/usr/bin/perl
%data = ('google', 'google.com', 'abc', 'abc.com', 'taobao', 'taobao.com');
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'abc'} = $data{'abc'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
2.创建哈希
创建哈希可以通过以下两种方式:
2.1 为每个 key 设置 value
$data{'google'} = 'google.com';
$data{'abc'} = 'abc.com';
$data{'taobao'} = 'taobao.com';
2.2 通过列表设置
列表中第一个元素为 key,第二个为 value。
%data = ('google', 'google.com', 'abc', 'abc.com', 'taobao', 'taobao.com');
也可以使用 => 符号来设置 key/value:
%data = ('google'=>'google.com', 'abc'=>'abc.com', 'taobao'=>'taobao.com');
以下实例是上面实例的变种,使用 - 来代替引号:
%data = (-google=>'google.com', -abc=>'abc.com', -taobao=>'taobao.com');
使用这种方式 key 不能出现空格,读取元素方式为:
$val = $data{-google}
$val = $data{-abc}
3.访问哈希元素
访问哈希元素格式:$哈希变量名{key},实例如下:
#!/usr/bin/perl
%data = ('google'=>'google.com', 'abc'=>'abc.com', 'taobao'=>'taobao.com');
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'abc'} = $data{'abc'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
4.读取哈希值
你可以像数组一样从哈希中提取值。
哈希值提取到数组语法格式:@哈希变量名{key1,key2}。
#!/uer/bin/perl
%data = (-taobao => 45, -google => 30, -abc => 40);
@array = @data{-taobao, -abc};
print "Array : @array\n";
执行以上程序,输出结果为:
Array : 45 40
5.读取哈希的 key 和 value
5.1 读取所有key
使用 keys 函数读取哈希所有的键,语法格式如下:
keys %HASH
该函数返回所有哈希的所有 key 的数组。
#!/usr/bin/perl
%data = ('google'=>'google.com', 'abc'=>'abc.com', 'taobao'=>'taobao.com');
@names = keys %data;
print "$names[0]\n";
print "$names[1]\n";
print "$names[2]\n";
5.2 读取所有value
使用 values 函数来读取哈希所有的值,语法格式如下:
values %HASH
该函数返回所有哈希的所有 value 的数组。
#!/usr/bin/perl
%data = ('google'=>'google.com', 'abc'=>'abc.com', 'taobao'=>'taobao.com');
@urls = values %data;
print "$urls[0]\n";
print "$urls[1]\n";
print "$urls[2]\n";
6.检测元素是否存在
如果你在哈希中读取不存在的 key/value 对 ,会返回 undefined 值,且在执行时会有警告提醒。
为了避免这种情况,我们可以使用 exists 函数来判断key是否存在,存在的时候读取:
#!/usr/bin/perl
%data = ('google'=>'google.com', 'abc'=>'abc.com', 'taobao'=>'taobao.com');
if( exists($data{'facebook'} ) ){
print "facebook 的网址为 $data{'facebook'} \n";
}
else
{
print "facebook 键不存在\n";
}
执行以上程序,输出结果为:
facebook 键不存在
以上代码中我们使用了 IF...ELSE 语句,在后面的章节我们会具体介绍。
7.获取哈希大小
哈希大小为元素的个数,我们可以通过先获取 key 或 value 的所有元素数组,再计算数组元素多少来获取哈希的大小,实例如下:
#!/usr/bin/perl
%data = ('google'=>'google.com', 'abc'=>'abc.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
8.哈希中添加或删除元素
添加 key/value 对可以通过简单的赋值来完成。但是删除哈希元素你需要使用 delete 函数:
#!/usr/bin/perl
%data = ('google'=>'google.com', 'abc'=>'abc.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
8-Perl 哈希的更多相关文章
- Perl 哈希
Perl 哈希 哈希是 key/value 对的集合. Perl中哈希变量以百分号 (%) 标记开始. 访问哈希元素格式:${key}. 以下是一个简单的哈希实例: 实例 #!/usr/bin/per ...
- 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 ...
- Perl中的哈希(四)
Perl中的哈希数据结构.相比较于数组,这种数据结构对于数据查找和统计更加方便. 一个特殊的哈希,%ENV,表示当前terminal下,通过setenv设置的variable的键值. 键:环境变量名, ...
随机推荐
- 预处理、const、static与sizeof-sizeof与strlen有哪些区别
1:它们的区别如下: (1)sizeof是操作符,strlen是函数. (2)sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型,该类型保证能容纳实现所 ...
- mysql 查询相关命令
1. 结果集按列展示 mysql -u用户名 -p密码 -D 数据库名 -e sql语句 示例:mysql -uroot -p123456 -D mysql -e select * f ...
- ycache中redis主备功能设计及使用说明
方案概述: 对于ycache-client,如下图,在一致性hash环上的每个节点都有一个备用的节点.正常情况下slave节点不参与key的分配(冷备).只有当master挂了,ycache clie ...
- known
邻接表 https://blog.csdn.net/Violet_ljp/article/details/80556460 Dijkstra 算法实现原理 https://www.jianshu.co ...
- 解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题
解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 当我们改变ListBox的ItemsSource时,会发现这样一个问题:数据源变化时,虽然控件中的内容会跟着 ...
- 计算机组成原理 — FPGA 现场可编程门阵列
目录 文章目录 目录 FPGA FPGA 的应用场景 FPGA 的技术难点 FPGA 的工作原理 FPGA 的体系结构 FPGA 的开发 FPGA 的使用 FPGA 的优缺点 参考文档 FPGA FP ...
- 一百一十七:CMS系统之注册页面对接短信验证码
from flask import Blueprint, requestfrom exts import alidayufrom utils import restfulfrom utils.capt ...
- 九十九:CMS系统之ajax提交修改密码的数据
顺便实现ajax提交的时候默认提交csrf_token var http = { 'get':function (args) { args['method'] = 'get'; this.ajax(a ...
- java和delphi共用的des加密解密
java: import antlr.StringUtils;import org.jeecgframework.core.util.StringUtil; import java.security. ...
- Vue 子组件与子组件之间传值
可以借用公共父元素.子组件A this.$emit("eventName", data) 触发事件,父组件监听事件,更改父组件 data , 通过Props 传值到子组件B,子组 ...