hash

一、关联数组的形式

  %h=('a',1,'b',2);         a是key 1是value    b是key  2是value

    以%开头,()为空散列

  %h=('a'=>1,'b'=>2);    更明显一些 用这个还可以省略引号  但默认全部都是字符串  当有数字的时候就不是你的本意了

  元素形式:$h{'a'}       #注意用$

  元素为简单变量,用$。 %h{2.5}  %{-1}  ${$ee} 都是可以的 小数  负数  简单变量都可以是key

二、 关联数组的赋值

  1、标准:  %a=('a',1,'b',2);

  2、数组与散列间赋值:%h=@a   散列也是数组 只是没有顺序

  3、@a=%h  数组元素的顺序随机

  4、($a,%h)=@array   #不太会用  先把数组的第一个值放进简单变量$a中 再把剩下的放进散列%h中  ,所以@array的个数必须是奇数

  5、%h=(%first,%second)  #浪费内存

  6、%h1=(%h2,'k','v')       #增加一组键值,必须成对出现

  7、函数的返回,比如split()的返回结果,也可以赋值给散列:

          %h=split(/,/,'a,b,c,d')

  8、片段:@key=('a','b','c')

        @hash{@keys}=@hash{reverse(@keys)}

        #注意@不能改为$,因$hash{}中key要求是简单变量,所以括号里面是一个数

                 而现在我想圈出一个数组,所以前面要变为@,括号里面也是@

                 都应该前后对应

                 如果你输入 $hash{@keys} 因为$hash大括号中的key要求是简单变量   这等同于 $hash{@keys的长度} 也就是@hash{3}

三、 元素赋值与操作

  1、增加: $h{'a'}  =  1   不存在则创建,hash不存在也创建

  2、删除:delete $h{'a'}

  3、不要用push pop shift splice 等与顺序有关的函数,否则结果不可知

  4、显示:不能  print "%hash";   这样输出的只是字符串:%hash

        如用  print %hash  则显示无空格

         用遍历的方法来逐一显示

  5、$a=%hash  $a被赋值为x    x是已有的元素数/分配的内存数   没什么卵用

四、关联数组操作函数

  key(%h) 或 key %h                  #返回键列表

  value(%h) 或 value %h     #返回值列表

  

  each(%h)循环:  ($key,$value)=each(%hash)

      循环中不要增加或删除元素,因为散列是无序的。循环的最后返回undef

  exist:查看关键字是否存在

      exist $h{'key'}

  undef(%h) : 删除散列 相当于%=()

  delete

Perl语言入门--5--散列、hash的更多相关文章

  1. Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线。

    Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线.

  2. 散列(Hash)表入门

    一.概述 以 Key-Value 的形式进行数据存取的映射(map)结构 简单理解:用最基本的向量(数组)作为底层物理存储结构,通过适当的散列函数在词条的关键码与向量单元的秩(下标)之间建立映射关系 ...

  3. StackExchange.Redis帮助类解决方案RedisRepository封装(散列Hash类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明本系列分享地址:http://www.cnblogs.com/tdws/p/5815735.html 上一篇文章的不合理之处,已经有所修改. 今天分 ...

  4. 散列(hash)

    散列(hash)是常用的算法思想之一,在很多程序中都会有意无意地使用到. 先来看一个简单的问题:给出N个正整数,再给出M个正整数,问这M个数中每个数分别是否在N个数中出现过. 例如N=5,M=3,N个 ...

  5. Redis散列(Hash)的相关命令

    散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...

  6. Perl语言入门14-17

    ---------第十四章 字符串与排序------------------- index查找子字符串 my $stuff = "howdy world!"; my $where ...

  7. Perl语言入门

    Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl语法基础: (1)Perl程序由声 ...

  8. 非对称算法,散列(Hash)以及证书的那些事

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35389657 作者:小马 这几个概念在金融电子支付领域用得比較多,我忽然认为把它们 ...

  9. Perl 语言入门6-9

    ---- 第6章 哈希----------- 简介 键值对.键和值都是任意标量,但键总是会被转换成字符串. 键唯一,值可重复. 应用场景:一组数据对应到另一组数据时. 如找出重复/唯一/交叉引用/查表 ...

随机推荐

  1. k8s 基于NFS部署storageclass pv自动供给

    在k8s中部署有状态应用时,通常需要做数据持久化存储. 后端存储的方式有以下几种: 1.基于宿主机本地的存储方式: (重启pod时,若pod被调度到其他节点上,尽管原来节点上的数据不会丢失,但是其他节 ...

  2. ProC第二弹

    一.提要 上文简单介绍了Windows下ProC配置开发,这次我们使用Linux平台再次配置Oracle ProC开发环境(RedHat Linux 9 + Oracle 92).    <OR ...

  3. 杭电 1155 Bungee Jumping(物理题)

    Problem Description Once again, James Bond is fleeing from some evil people who want to see him dead ...

  4. RMQ原理及实现

    RMQ(Range Minimum/Maximum Query),区间最值查询问题,是指:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值. 这里介 ...

  5. SPOJ COT2 Count on a tree II 树上莫队算法

    题意: 给出一棵\(n(n \leq 4 \times 10^4)\)个节点的树,每个节点上有个权值,和\(m(m \leq 10^5)\)个询问. 每次询问路径\(u \to v\)上有多少个权值不 ...

  6. dll和lib关系及使用

    对于dll和lib两者的关系,需要理解的一个概念是编译时和运行时.   lib是编译时的东西,在lib里面包含了方法名和方法所在的dll名字,可以用dumpbin -all XXX.lib查看内容. ...

  7. loj2032 「SDOI2016」游戏

    做了 [JSOI2008]Blue Mary开公司 以后发现这 tm 不就是个傻逼树剖+李超线段树吗,做了以后发现我才是傻逼--树剖竟然写错了--这题是我目前写过最长的代码了qwq #include ...

  8. 学习boundingRectWithSize:options:attributes:context:计算文本尺寸

    oundingRectWithSize:options:context: 返回文本绘制所占据的矩形空间. - (CGRect)boundingRectWithSize:(CGSize)size opt ...

  9. 前端PS切图技巧

    先选择“编辑”-“首选项” 打开,找到“参考线”    设置一下每格网格 100像素 5个细块 确定后 ctrl+‘ 出现网格.(通过网格对齐切图比用参考线切图更好). 如果使用PS cc的软件的话, ...

  10. 12章 应用spary制作高级网页组件

    比较复杂的用户界面,tab面板  伸缩面板和折叠面板等组件.   tab面板和菜单实际上分为两种           一种是切换各个tab页中的内容时并不刷新浏览器窗口,仅仅是被隐藏起来了  利用ja ...