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. jquery源码学习第一天

    第一天认识了jquery的大体结构,总的大范围是 (function() { // 这里是封装的代码,包括了各种方法.工具 window.JQuery = JQuery window.$ = $; } ...

  2. CPL学习笔记(一)

    整型 计算机的内存的基本单位是位(bit),可以将其看作电子开关,可以开,表示1:也可以关表示0. 字节(byte)通常指八位的内存单元. 8bit=1byte=1B; 1KB=1024B; 1M=1 ...

  3. LeetCode之Weekly Contest 90

    LeetCode第90场周赛记录 第一题:亲密字符串 问题: 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回  ...

  4. vim小操作

    初时,先有ed,ed为ex之父,ex为vi之父,而vi为vim之父 c 修改 d 删除 y 复制到寄存器 g~ 反转大小写 gu 反转为小写 gU 反转为大写 > 增加缩进 < 减小缩进 ...

  5. RSA与AES实现数据加密传输

    RSA.AES简介 RSA:非对称加密,需要提前生成两个密钥(一对的),通过其中一个密钥加密后的数据,只有另一个密钥能解密.通常这两个密钥中有一个会暴漏出来,即对外公开的,这个密钥称为“公钥”,反之另 ...

  6. 移动端H5前端性能优化指南:

    分享地址:https://isux.tencent.com/h5-performance.html

  7. 15.Yii2.0框架where单表查询

    目录 新建控制器 HomeController.php 新建model article.php 新建控制器 HomeController.php D:\xampp\htdocs\yii\control ...

  8. Thinkphp5 同时连接两个库

    新建api/user.php <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/8/25 * Time: 1 ...

  9. HMAC(Hash-based Message Authentication Code)实现原理

    1.HMAC 概念 HMAC(Hash-based Message Authentication Code)基于 hash 的消息验证码,是 安全通信中必要的组成部件. 主要是 防止消息被篡改,和对称 ...

  10. LeetCode(117) Populating Next Right Pointers in Each Node II

    题目 Follow up for problem "Populating Next Right Pointers in Each Node". What if the given ...