Perl中的哈希数据结构。相比较于数组,这种数据结构对于数据查找和统计更加方便。

一个特殊的哈希,%ENV,表示当前terminal下,通过setenv设置的variable的键值。

键:环境变量名,,,,值:环境变量值。

哈希是一种数据结构,由一对对的键(keys)--值(values)对来组成。

这些键和值都是任意的标量,但键总会被转换成字符串而且必须是唯一的字符串。

访问哈希元素,    $hash{$some_key}    ##和访问数组的做法类似,只是使用了花括号{}而非方括号[]。

访问哈希表中不存在的值得到undef。

$family_name{'barney'} = 'rubble'        ##完成对某一哈希元素的单一赋值

访问整个哈希,    %family_name      ##此时哈希被转换成列表,列表中的元素为键--值对。

%family_name = ('foo', 35, 'bar', 12.4);

my %new_hash = %old_hash     ##整个hash的赋值,会先将hash分解为键值对,

后在将键值对合并为hash。所以前后顺序可能改变。

还可以将hash写为如下的方式来进行赋值   my %last_name = (

'fred'  =>  'flintstone',

'dino'  =>  undef

);

=>称为胖箭头,来显式的指出其中的键值对,其中键的''可以省略。  $score{'fred'}也可以直接简写为$score{fred}。

哈希中的函数。

keys和values分别返回hash中的键列表和值列表。my @k = keys %hash;      my @v=values %hash;

在标量上下文中,分别返回键元素和值元素的个数。

if(%hash)     {print "....";}         ##在标量上下文,只要hash中有至少一个键值对,就返回真。

each函数,从哈希中返回一组键值。

while ( ($key, $value) = each %hash ) {print "....";}   ##在while中时标量上下文,返回2或0.

exists函数,检查哈希中是否存在某个键。

if (exists $book{"dino"})  {print "....";}

delete函数,删除哈希中的某个键值,不是赋值undef,而是直接删除。

delete $books{$person};

不可以在双引号内,直接内插整个hash。

foreach $persons (sort keys %books)

if( $books($persons) )  {print "$person has $books{persons}";}         ##只可以这样完成单个哈希的内插

Perl中的哈希(四)的更多相关文章

  1. perl 中的哈希赋值

    在perl 中,通过代码动态的给哈希赋值,是最常见的应用场景,但是有些情况下,我们事先知道一些信息,当需要把这些信息存放进一个哈希的时候,直接给哈希赋值就好: 哈希的key不用说,就是一个字符串,关键 ...

  2. Perl中的数组&哈希应用

    哈希和数组是Perl中较为常用的结构,本文则重点讨论数组和哈希的一些基本用法,供广大喜爱Perl的同学们交流学习. 哈希 Perl中的哈希表类似于Python中的字典结构,由(键=>值)对构成, ...

  3. perl中ENV的使用

    在打印环境变量的时候可以用到.实际上是%ENV,perl中的哈希变量,里面保存的是环境变量.键是环境变量名,值是环境变量值.例如,有一个环境变量是PATH,其值为C:\windows,那么,打印这个环 ...

  4. [PHP内核探索]PHP中的哈希表

    在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...

  5. Java集合类中的哈希总结

    JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...

  6. Perl中的替换(七)

    在Perl中使用s///进行替换操作,与m//进行查找操作类似. s/with (\w+)/against $1's team/;      ##第一个双斜线,表示被替代的文本.第二个双斜线,表示将替 ...

  7. perl中的grep函数介绍

    grep函数 (如果你是个的新手,你可以先跳过下面的两段,直接到 Grep vs.loops 样例这一部分,放心,在后面你还会遇到它) <pre>grep BLOCK LISTgrep E ...

  8. Perl中的输入输出流(三)

    Perl中读取标准输入:<STDIN> foreach (<STDIN>)  { print "I saw $_";} 钻石操作符<>:它的参数 ...

  9. Perl 变量:哈希变量

    Perl 哈希变量哈希是 key/value 对的集合.Perl中哈希变量以百分号 (%) 标记开始.访问哈希元素格式:${key}. 1.创建哈希创建哈希可以通过以下两种方式: 1.为每个 key ...

随机推荐

  1. Struts2之Action三种接收参数形式与简单的表单验证

    有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的A ...

  2. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验九:PS/2模块③ — 键盘与多组合键

    实验九:PS/2模块③ — 键盘与多组合键 笔者曾经说过,通码除了单字节以外,也有双字节通码,而且双字节通码都是 8’hE0开头,别名又是 E0按键.常见的的E0按键有,<↑>,<↓ ...

  3. maven 使用-P指定环境打包,linux移动配置文件失败,windows成功!

    问题描述:    windows机器使用-P指定环境打包,最后组装文件组装成功,配置文件成功移动,linux下却只移动了jar包. windows:                  linux:   ...

  4. IIS7配置伪静态把后缀名映射为html方案

    1.在IIS新建站点.[创建的时候不用去选择版本和模式,默认即可] 2.选中站点,切换到功能试图,找到“处理程序映射",双击之后,在打开窗口右侧的操作栏目下做如下设置: 1)右边" ...

  5. 基于ELK的简单数据分析

    原文链接: http://www.open-open.com/lib/view/open1455673846058.html 环境 CentOS 6.5 64位 JDK 1.8.0_20 Elasti ...

  6. 【CF932E】Team Work/【BZOJ5093】图的价值 数学+NTT

    [CF932E]Team Work 题意:求$\sum\limits_{i=1}^nC_n^ii^k$,答案模$10^9+7$.$n\le 10^9,k\le 5000$. [BZOJ5093]图的价 ...

  7. 【CF802L】Send the Fool Further! (hard) 高斯消元

    [CF802L]Send the Fool Further! (hard) 题意:给你一棵n个节点的树,每条边有长度,从1号点开始,每次随机选择一个相邻的点走,走到一个叶子时就停止,问期望走的总路程. ...

  8. Node.js 命令行程序开发资料

    Node.js 命令行程序开发教程http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html用Node.js创建命令行工具ht ...

  9. vue---结合elementui做异步数据分页

    使用vue+elementui来请求数据做分页: <el-col :span="24" class="toolbar pageBar"> <e ...

  10. sublime设置tab键为4个空格

    在使用sublime的时候,有时候新建的文件,默认的缩进是2个,那么如何将sublime设置tab键为4个空格呢? 具体方法: 配置: , "translate_tabs_to_spaces ...