`

Perl Hash Usage (Reposted)

    博客分类:
  • Perl
 
阅读更多

perl中没有bool类型

perl中没有bool类型,所有的判断都是通过数字类型和字符串类型来进行的。

哪些类型为false

标量只有三种,数字0,空字符串"", 字符串'0'("0")。

矢量有空数组,空哈希。

判断数组或哈希为空

和标量一样,直接将数组或哈希放到if语句中即可

my @list = () ;if(@list){    print "Not empty!\n" ;}my %hash = () ;if(%hash){    print "Not empty!\n" ;}

 

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'

清空Perl 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);

判断Perl Hash是否包含key

exists($h{$key});

Perl Hash的长度

想要知道一个hash存放多少数据

$hash_size=keys%h#把%h的长度放到$hash_size中printscalarkes%h,"\n"#打印%h的长度。这里用了scalar来返回数组长度。

遍历一个Perl Hash

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

Reference引用

Reference类似于C/C++的指针

$h_ref=\%h;#获得一个hash的reference%aHash=%{$h_ref};#把hashreference当成hash用$value=$h_ref->{akey}#这个和%h{akey}是一样的

传递Perl Hash到函数

一般都是传递一个reference到函数

%h=();$h{a}=1;foo(\%h)print$h{b},"\n";#打印出2。这个值来自于函数foo()subfoo{my($h)=@_;print$h->{a},"\n";#打印出1$h->{b}=2;}

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

函数可以返回Perl Hash

subfoo{my%fh;$fh{a}=1;return%h;}my%h=foo();print"$h{a}\n";#打印出1

但是这样等于把整个hash从%fh复制到了%h,效率比较低。可以考虑返回hash的引用:

subfoo{my%fh;$fh{a}=1;return\%fh;}my$hr=foo();print"$hr->{a}\n";#打印出1my%h=%{foo()}#如果就是想复制,也可以用这种方法

不用担心在subfoo里的%fh是局部变量,Perl会自动管理内存。它会发现%fh被$hr引用,就不会清理%fh的内存,并且$hr失效后释放内存

  • 大小: 178.5 KB
分享到:
评论

相关推荐

    perl_hash 函数

    ### Perl Hash 数据结构详解 #### 一、Perl Hash 概述 **Perl Hash** 是 Perl 编程语言中的一种非常重要的数据结构。它类似于数组,但与数组不同之处在于其索引(通常称为 key)不是数字,而是字符串。这意味着...

    perl_Perl_

    - `hash.pl`可能涉及Perl的哈希(关联数组)操作,这是Perl中非常强大的数据结构。 - `111.pl`可能是一个特定功能的脚本,命名可能没有特殊含义,只是作为示例或练习。 - `hello.pl`通常用于打印经典的"Hello, World...

    Programming Perl中文版

    - 哈希(或散列,如 `%hash`):用于存储键值对。 - **数据结构操作:** - 数组操作:添加元素、删除元素等。 - 哈希操作:插入键值对、查找值等。 - **控制结构:** - 循环结构(如 `for`, `while`):重复...

    perl脚本,初学者可以参考,主要是字符串,hash,文件

    对于初学者而言,掌握Perl的基础知识,如字符串操作、哈希(Hash)的使用以及文件处理,是学习过程中的重要环节。以下将详细介绍这些核心概念。 1. **字符串**:在Perl中,字符串是基本的数据类型之一,用于存储...

    Perl语言编程:Programming Perl

    my %hash = ("one" => 1, "two" => 2, "three" => 3); ``` #### 文件操作 Perl提供了丰富的API来进行文件读写操作,包括打开、关闭文件,读取或写入文件内容等功能: ```perl open(my $fh, ', 'file.txt') or die ...

    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系列。这些哈希函数在数据完整性检查、密码存储和文件校验等方面...

    3d.zip_3维hashin准则_Hashin 3D_hashin_失效准则_层合板 hashin

    在复合材料领域,Hashin失效准则是一个非常重要的理论模型,尤其在分析三维层合板的强度和稳定性时。Hashin准则由Stanley Hashin在20世纪60年代提出,用于预测多向复合材料的破坏行为。这个准则考虑了内部微裂纹的...

    HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi

    标题中的"HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi"表明这是一个关于ABAQUS软件中应用Hashin失效准则进行三维分析的示例或教程。ABAQUS是一款广泛应用的有限元分析软件,尤其在结构...

    perl-5.32.1.tar.gz

    - **变量**:Perl支持多种类型的变量,如标量(scalar)、数组(array)、哈希(hash)等,以及引用(reference)机制,允许创建复杂的数据结构。 - **正则表达式**:Perl的正则表达式功能强大且灵活,可以进行模式...

    Perl 5官方文档

    1. **变量**:Perl中的变量分为标量、数组和哈希等类型,它们以特定的前缀表示,如`$scalar`, `@array`, `%hash`。 2. **引用**:Perl的引用允许创建指向其他数据结构的指针,如`\$scalar_ref`, `@\array_ref`, `%...

    perl常用知识_perl常用知识

    Perl是一种强大的、高级...随着经验的积累,你还可以深入学习更多高级特性,如 Moose 框架用于更现代化的面向对象编程,或者 Tie::Hash::NamedCapture 等模块来增强功能。不断探索和实践,你将成为一名精通Perl的专家。

    Perl 5教程及perl常问问题集

    Perl 5 是一种功能强大的文本处理语言,广泛用于系统管理、网络编程、脚本编写以及Web开发等场景。它的语法独特,结合了C、sed、awk等语言的特点,被誉为“实用提取和报告语言”(Practical Extraction and ...

    hashin-strain-3d_hashin_三维hashin_三维hashin失效_失效准则_3D—Hashin_

    **三维Hashin失效准则详解** 在复合材料领域,失效分析是至关重要的,它关系到材料的性能预测和结构安全。Hashin失效准则是一种广泛应用的多向复合材料失效理论,由Shlomo Hashin于1962年提出,主要用于评估多向受...

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

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

    perl程序编写教程

    8. **引用和数据结构**:Perl支持对复杂数据结构的处理,如数组引用 (`\@array`) 和哈希引用 (`%\hash`),以及匿名数组和哈希。 9. **对象导向编程**:Perl支持面向对象编程,通过`package`定义类,`new`创建对象,...

    神奇的perl-最佳Perl入门

    ### 知识点一:Perl简介与环境搭建 #### Perl是什么? Perl是一种高级编程语言,以其灵活性和强大的文本处理功能而著称。它最初由Larry Wall于1987年设计,旨在创建一种易于学习且功能强大的语言。Perl广泛应用于...

    超好perl学习教程

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

    uthash开源的hash函数实现

    UTHASH 是一个开源的 C 语言库,提供了一种简单且高效的哈希表实现,用于在 C 代码中快速查找和管理数据结构。这个库的主要功能是提供一个宏定义的集合,可以方便地将结构体转化为哈希表,进而进行添加、删除、查找...

    UMAT_Hashin3D_hashin

    标题 "UMAT_Hashin3D_hashin" 指涉的是一个专门针对复合材料损伤分析的三维子程序,该程序基于Hashin破坏准则。在有限元分析(FEA)中,用户自定义材料(User-Defined Material,UMAT)是实现特定材料行为建模的一种...

Global site tag (gtag.js) - Google Analytics