`
j2ee_zhongqi
  • 浏览: 203606 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Perl Hash 用法

阅读更多
基本用法

# 初始化 %h为空数组
%h = {};

# 用数组初始化%h为 a=>1, b=>2
%h = ('a', 1, 'b', 2);# 意义同上,只是另一种更形象化的写法。

%h = ('a'=>1, 'b'=>2);#如果key是字符串,可以省略引号。
下面这行和上面那行是一样的%h = (a=>1, b=>2);

# 用{}来访问print "
$h{a}\n"; # 打印1

$h{b} = '2b';
print "$h{b}\n"# 打印2b

# 删除key用deletedelete $h{b}; # 从$h删除'b' 


清空hash
undef %h 


得到hash的所有键值#
得到所有keys,顺序取决于hash函数,或者说是乱序
@all_keys = keys %h;
# 所有键值,是按hash的值从大往小排列的。值的比较是数字比较(比如说,10>9)@all_keys = sort{$h{$b}<=>$h{$a}} (keys %h);

# 所有键值,是按hash的值从小往大排列的。值的比较是数字比较
@all_keys = sort{$h{$a}<=>$h{$b}} (keys %h);

# 所有键值,是按hash的值从小往大排列的。值的比较是字符串比较#(比如说,'10' < '9')
@all_keys = sort{$h{$a} cmp $h{$b}} (keys %h); 


判断hash是否包含key
exists($h{$key}); 


Hash的长度
想要知道一个hash存放多少数据
$hash_size = keys %h # 把%h的长度放到$hash_size中print scalar kes %h, "\n" # 打印%h的长度。这里用了scalar来返回数组长度。 


遍历一个hash
while (my ($k, $v) = each %h) {print "$k ---> $v\n";} 

foreach my $key (keys %$hostStatus) {
 print "The key is $key and value is $hostStatus->{$key}.";
		}


Reference引用

Reference类似于C/C++的指针
$h_ref = \%h; # 获得一个hash的reference
%aHash = %{$h_ref};# 把hash reference当成hash用
$value = $h_ref->{akey} # 这个和%h{akey}是一样的


传递hash到函数
一般都是传递一个reference到函数
%h = ();
$h{a}=1;
foo(\%h)
print $h{b}, "\n"; # 打印出2。这个值来自于函数foo() 

sub foo {
my ($h) = @_;
print $h->{a}, "\n"; # 打印出1$h->{b} = 2;
} 


函数返回hash,或者hash引用(hash reference)

函数可以返回hash
sub foo {
my %fh;
$fh{a} = 1;
return %h;
} 
my %h = foo();
print "$h{a}\n"; #打印出 1 

但是这样等于把整个hash从%fh复制到了%h,效率比较低。可以考虑返回hash的引用:
sub foo {
my %fh;
$fh{a} = 1;
return \%fh;
} 
my $hr = foo();
print "
$hr->{a}\n" #打印出 1
my %h = %{foo()} # 如果就是想复制,也可以用这种方法 


from:http://lmylvmingyue.blog.163.com/blog/static/46601701201031551731661/
分享到:
评论
1 楼 pythoner126com 2012-09-12  
写得不错,国内对perl热情不是很高,我最近也有翻译,请多多指导:http://www.yiibai.com/perl
相互学习,共同进步。

相关推荐

    perl_hash 函数

    本文和大家重点讨论一下Perl Hash的用法,哈希是一种数据结构,和数组类似,但是,和数组不同的是,其索引不是数字,而是名字。也就是说,索引(这里,我们将它叫key)不是数字而是任意的唯一的字符串。

    plgo:从Go运行Perl代码

    go 从Go运行Perl代码 实际上,为了更精确一点,此程序包从Perl中提取值到Go中。 这是由驱动的语言嵌入的一种不太常见的方法。 这是一个入门 ... // extract a SHA hash from Perl var sum string p.Eval(`Diges

    pollword:pullword-Pullword(在线中文分割系统)api的perl代理!

    pullwordpullword - ... run the following commands:perl Makefile.PLmakemake testmake installOr you can sample using cpan tool (用perl包管理工具安装): cpanm pullwordSYNOPSIS 使用方法use pullword;my $valu

    BT发布跟踪系统BTman

    BT发布跟踪系统:BTman BTMan是一个广泛支持各种数据库的实时BT发布跟踪系统; 本系统优点: 1.因为使用odbc所以几乎支持所有数据库:mssqlserver,mysql,access.....使用方法: 运行btman.exe(先停止bt tracker)

    linux命令详解之rpm命令参数使用方法

    常用命令组合:-ivh:安装显示安装进度–install–verbose–hash-Uvh:升级软件包–Update;-qpl: 列出RPM软件包内的文件信息[Query Package list];-qpi:列出RPM软件包的描述信息[Query Package install ...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x>y)> ...

    Advanced Bash-Scripting Guide <>

    在Perl 脚本中使用eval 命令来强制变量替换 11-15. 使用set 来改变脚本的位置参数 11-16. 重新分配位置参数 11-17. Unset 一个变量 11-18. 使用export 命令传递一个变量到一个内嵌awk 的脚本中 11-19. 使用getopts ...

    Linux高级bash编程

    在Perl脚本中使用eval命令来强制变量替换 11-15. 使用set来改变脚本的位置参数 11-16. 重新分配位置参数 11-17. Unset一个变量 11-18. 使用export命令传递一个变量到一个内嵌awk的脚本中 11-19. 使用getopts命令来...

    coloursum::artist_palette:整理您的校验和输出

    它既了解BSD的“标签”形式,也了解GNU Coreutils / Perl shasum(1)形式的校验和,并已通过macOS的md5和shasum以及GNU md5sum和sha256sum的输出进行了测试。 安装 您将需要。 cargo install coloursum 用法 md5sum...

    MooX-Params-CompiledValidators:Mo

    姓名MooX :: Params :: ...选修的默认情况下为false, Params::ValidationCompiler首选使用必需的参数所需的ValidationTemplates方法该模块(角色)的目标是通过为项目中的所有参数定义一组验证模板来标准化参

    MySQL 5.1官方简体中文参考手册

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...

    MySQL 5.1中文手冊

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...

    mysql官方中文参考手册

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...

    MYSQL中文手册

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得...

    MySQL 5.1参考手册 (中文版)

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...

    MySQL 5.1参考手册中文版

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得...

    MySQL 5.1参考手册

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...

    MySQL5.1参考手册官方简体中文版

    2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表...

    2009 达内Unix学习笔记

    用法 df [-F FSType] [-abeghklntVvZ] [-o FSType 特定选项] [目录 | 块设备 | 资源] df -k 以kbytes显示文件大小的查看文件系统方式 六、显示文件内容 more 分屏显示文件的内容。 用法 more [-cdflrsuw] [-行...

Global site tag (gtag.js) - Google Analytics