Perl语言入门--5--散列、hash

                                    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、数组与散列间赋值:%[email protected]   散列也是数组 只是没有顺序

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

  4、($a,%h)[email protected]   #不太会用  先把数组的第一个值放进简单变量$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}[email protected]{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

时间: 2024-10-01 07:37:45

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

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

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35389657 作者:小马 这几个概念在金融电子支付领域用得比较多,我忽然觉得把它们串起来一起讲,层层引入,可能更好理解一些.希望能以最简单朴实的方式讲明白他们之间的关系. 一非对称算法 关于非对称算法,你只要知道下面这些就行了,密钥是一对,一个叫公钥,一个叫私钥,前者公开,后者保密.假设你有一对公私钥,给你一串数据,你可以用私钥加密,然后把密文和公钥都放出去,别人可以用这个公钥解

perl简洁编程,《Perl语言入门(第五版)》读书笔记

整理一下好多年前放在hi.baidu上的笔记! perl简洁编程,<Perl语言入门(第五版)>读书笔记20110316! 书很早就买了,简单翻翻就扔下了!最近买了ipad,良好的阅读体验,用来看书,感觉书又能看进去了!不能白看一遍,整理一下阅读笔记! Perl的程序竟能如此简洁!!! sub division  {     $_[0]/$_[1]; } $_即为接收的数组,同时数据运算后,直接返回,省略了return. sub max {    my($max_so_far)  =  shi

散列(hash)

散列(hash)是常用的算法思想之一,在很多程序中都会有意无意地使用到. 先来看一个简单的问题:给出N个正整数,再给出M个正整数,问这M个数中每个数分别是否在N个数中出现过. 例如N=5,M=3,N个正整数{8,3,7,6,2},欲查询的M个正整数为{7,4,2},于是后者只有7和2在N个正整数中出现过, 而4是没有出现过的. 对于这个问题,最直观的思路是:对每个欲查询的正整数x,遍历所有的N个数,看是否有一个数与x相等.这种 做法的时间复杂度为O(MN),当N和M都很大时,时间复杂度显然太大!

Perl语言入门(中文版)(第6版) 东南大学出版社

第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? Larry干吗不用其他语言? Perl算容易,还是算难? Perl怎么会这么流行? 现在的Perl发展得怎么样了? 哪些事情最适合用Perl来做? 哪些事情不适合用Perl来做? 如何取得Perl? CPAN是什么? 如何得到Perl的技术支持? 还有别的技术支持方式吗? 如果发现Perl有bug

Perl语言入门:第六章习题:处理用户所指定的名字并汇报相应的姓。

37 print "\n----------------------------------_exercise_6_1--------------------------\n";     38 my %bless_function = ( #hash may be a lexical variable     39    "constructors" => "default_values",     40    "error_ha

Perl语言入门--3--文件读取与写入

现有文件test.txt,内容为:"123\n456" 1,打开文本test.txt #!/usr/bin/perl open d,"test.txt"; d 为文件句柄,指向打开的文件 2,逐行读取文本test.txt #!/usr/bin/perl open d,"< test.txt"; while(<d>){ print $_; } close d; 结果:123 456 或者:print <d>; 结果:同

Perl语言入门:第九章 示例程序和代码

#! /usr/bin/perl use strict; use warnings; print "\n----------------------------------_substitutions_with_s///--------------------------\n";$_ = "He's out bowling with Barney tonight.";s/Barney/Fred/;print $_."\n";s/filehandl

Perl语言入门--2--perl的运算符

一.算数运算符 **:是幂 结果不能超过数的范围 当指数为小数时 底数不能为负数 %:取余数  两边的操作数为整数,如果不是则要截取,把所有的小数部分去掉 注意:当一个字符串参加运算,需要转化为整数时,如果不能转化为整数则值为零, '2'+1=3   'a'+1=1 二.数字比较运算符 大于小于等于   :比较结果为真或非零 ,假或零 <=> : 比较运算   $a <=> $b 当a大于b时:值为1 当a小于b时:值为-1 当a等于b时:值为0 用这个运算符的时候,自动把操作数转

Perl语言入门

第二章.标量数据 标量(scalar):数字或者字符串 数字均以dobule类型保存,没有整数,可以插入下划线方便阅读 123456789和 123_456_789表示同样的效果. 支持其他进制的整数变量,同样支持插入下划线方便阅读. 0377            #8进制,以0开头,表示十进制下255 0xff              #16进制,以0x开头,表示十进制下255 0b11111111  #二进制,以0b开头,表示十进制下255 字符串,就是一个字符序列,没有长度大小,可以填