`
j2ee_zhongqi
  • 浏览: 209507 次
  • 性别: 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 数据结构详解 #### 一、Perl Hash 概述 **Perl Hash** 是 Perl 编程语言中的一种非常重要的数据结构。它类似于数组,但与数组...掌握 Perl Hash 的使用方法对于编写高效和简洁的 Perl 程序至关重要。

    perl文件用法

    要了解如何使用Perl以及它的基本用法,我们首先需要安装Perl解释器,通常可以在官方网站`www.perl.org`上找到对应操作系统的版本。安装完成后,就可以开始编写和运行Perl脚本了。 1. **Perl脚本的基本结构** - 每...

    Perl语言编程:Programming Perl

    ### Perl语言编程:《Programming Perl》 #### 书籍概述 《Programming Perl》是一本由Larry ...通过对本书的学习,读者不仅可以掌握Perl语言的基本概念和用法,还能了解到如何利用Perl解决实际问题的方法和技术。

    关于perl DBI的方法使用

    下面将详细介绍Perl DBI的一些关键概念和方法。 1. 变量表达的含义: - `$drh`:驱动程序对象句柄,代表与特定数据库驱动的交互。 - `$dbh`:数据库句柄,表示与一个数据库的连接。 - `$sth`:语句柄,用于执行...

    神奇的perl-最佳Perl入门

    - 哈希拷贝与反转:使用`%hash2 = %hash1`进行拷贝,使用`%hash2 = reverse %hash1`进行反转。 - 哈希赋值:`$hash{$key} = $value`。 #### 哈希内嵌哈希 - 哈希可以作为另一个哈希的值,形成哈希内嵌哈希的结构。...

    Perl 5官方文档

    例如,输入`perldoc perl`可以看到Perl的简介和基本语法,`perldoc -f function_name`可以查看某个函数的用法,`perldoc modulename`可以查看特定模块的文档。通过熟练使用"perldoc",开发者可以快速查找和学习Perl...

    perl常用知识_perl常用知识

    - Perl支持面向对象编程,通过 `package` 定义类,`new` 创建对象,`method` 定义方法,`@ISA` 定义继承链。 10. **上下文**: - Perl的上下文概念很重要,它决定了变量的行为。标量上下文返回单个值,列表上下文...

    perl程序编写教程

    9. **对象导向编程**:Perl支持面向对象编程,通过`package`定义类,`new`创建对象,`->`操作符调用方法。 10. **错误处理**:Perl使用`eval`函数捕获运行时错误,并通过`die`和`warn`函数报告错误信息。 11. **...

    Perl 语言编程,详细讲解了perl的语法及技巧

    1. **变量和数据类型**:Perl支持多种变量类型,如标量(scalar)、数组(array)、哈希(hash)等。标量变量用$符号标识,数组用@,哈希用%。Perl是弱类型语言,变量的数据类型会根据赋值自动调整。 2. **控制结构...

    Centos7 离线perl-CPAN rpm包

    3. **perl-Digest-SHA-5.85-4.el7.x86_64.rpm**: 这是Perl的Digest::SHA模块,提供了SHA(Secure Hash Algorithm)哈希函数的实现,包括SHA-1和SHA-2系列。这些哈希函数在数据完整性检查、密码存储和文件校验等方面...

    超好perl学习教程

    Perl中的变量类型包括标量(scalar)、数组(array)和哈希(hash),这些数据结构为处理不同类型的数据提供了便利。例如,`$var`代表标量,`@array`是数组,而`%hash`是哈希。 在Perl中,正则表达式(Regular ...

    Programming Perl中文版

    ### Programming Perl中文版知识点概述 #### 一、Perl语言简介 **标题与描述解析:** “Programming Perl...无论是文本处理、网络编程还是系统管理,Perl 都能提供强大的工具和灵活的方法,让你的编程之路更加顺畅。

    perl学习简明教程

    在面向对象编程方面,Perl支持类和对象的创建,可以通过`package`定义一个类,使用`new`关键字实例化对象,通过`sub`定义方法。Perl5.6以后的版本还引入了角色(roles),提供了一种组合类行为的方式,增强了代码的...

    Perl用Post方法从新浪查天气

    ### Perl使用POST方法从新浪查询天气 在本篇教程中,我们将探讨如何使用Perl语言结合LWP(Library for Web Programming)模块通过POST方法从新浪网获取天气信息。此脚本适用于那些希望了解如何利用Perl进行网络请求...

    Perl学习总结 - 副本.docx

    - `perlfunc`:列出Perl内置函数及其用法。 - `perlquick`、`perlretut`:提供Perl正则表达式教程。 #### 三、Perl程序结构 一个典型的Perl脚本包含以下部分: - **第一行(Shebang行)**:指定Perl解释器的...

    perl 函数全集(绝版)

    通过阅读这些文档,开发者可以掌握Perl函数的使用方法,解决实际问题,并能更好地融入Perl编程社区。由于Perl函数全集资料稀少,这份压缩包中的内容尤为珍贵,值得深入研究。为了充分利用这份资源,建议逐个查阅各个...

Global site tag (gtag.js) - Google Analytics