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 编程语言中的一种非常重要的数据结构。它类似于数组,但与数组不同之处在于其索引(通常称为 key)不是数字,而是字符串。这意味着...
- `hash.pl`可能涉及Perl的哈希(关联数组)操作,这是Perl中非常强大的数据结构。 - `111.pl`可能是一个特定功能的脚本,命名可能没有特殊含义,只是作为示例或练习。 - `hello.pl`通常用于打印经典的"Hello, World...
- 哈希(或散列,如 `%hash`):用于存储键值对。 - **数据结构操作:** - 数组操作:添加元素、删除元素等。 - 哈希操作:插入键值对、查找值等。 - **控制结构:** - 循环结构(如 `for`, `while`):重复...
对于初学者而言,掌握Perl的基础知识,如字符串操作、哈希(Hash)的使用以及文件处理,是学习过程中的重要环节。以下将详细介绍这些核心概念。 1. **字符串**:在Perl中,字符串是基本的数据类型之一,用于存储...
my %hash = ("one" => 1, "two" => 2, "three" => 3); ``` #### 文件操作 Perl提供了丰富的API来进行文件读写操作,包括打开、关闭文件,读取或写入文件内容等功能: ```perl open(my $fh, ', 'file.txt') or die ...
3. **perl-Digest-SHA-5.85-4.el7.x86_64.rpm**: 这是Perl的Digest::SHA模块,提供了SHA(Secure Hash Algorithm)哈希函数的实现,包括SHA-1和SHA-2系列。这些哈希函数在数据完整性检查、密码存储和文件校验等方面...
在复合材料领域,Hashin失效准则是一个非常重要的理论模型,尤其在分析三维层合板的强度和稳定性时。Hashin准则由Stanley Hashin在20世纪60年代提出,用于预测多向复合材料的破坏行为。这个准则考虑了内部微裂纹的...
标题中的"HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi"表明这是一个关于ABAQUS软件中应用Hashin失效准则进行三维分析的示例或教程。ABAQUS是一款广泛应用的有限元分析软件,尤其在结构...
- **变量**:Perl支持多种类型的变量,如标量(scalar)、数组(array)、哈希(hash)等,以及引用(reference)机制,允许创建复杂的数据结构。 - **正则表达式**:Perl的正则表达式功能强大且灵活,可以进行模式...
1. **变量**:Perl中的变量分为标量、数组和哈希等类型,它们以特定的前缀表示,如`$scalar`, `@array`, `%hash`。 2. **引用**:Perl的引用允许创建指向其他数据结构的指针,如`\$scalar_ref`, `@\array_ref`, `%...
Perl是一种强大的、高级...随着经验的积累,你还可以深入学习更多高级特性,如 Moose 框架用于更现代化的面向对象编程,或者 Tie::Hash::NamedCapture 等模块来增强功能。不断探索和实践,你将成为一名精通Perl的专家。
Perl 5 是一种功能强大的文本处理语言,广泛用于系统管理、网络编程、脚本编写以及Web开发等场景。它的语法独特,结合了C、sed、awk等语言的特点,被誉为“实用提取和报告语言”(Practical Extraction and ...
**三维Hashin失效准则详解** 在复合材料领域,失效分析是至关重要的,它关系到材料的性能预测和结构安全。Hashin失效准则是一种广泛应用的多向复合材料失效理论,由Shlomo Hashin于1962年提出,主要用于评估多向受...
1. **变量和数据类型**:Perl支持多种变量类型,如标量(scalar)、数组(array)、哈希(hash)等。标量变量用$符号标识,数组用@,哈希用%。Perl是弱类型语言,变量的数据类型会根据赋值自动调整。 2. **控制结构...
8. **引用和数据结构**:Perl支持对复杂数据结构的处理,如数组引用 (`\@array`) 和哈希引用 (`%\hash`),以及匿名数组和哈希。 9. **对象导向编程**:Perl支持面向对象编程,通过`package`定义类,`new`创建对象,...
### 知识点一:Perl简介与环境搭建 #### Perl是什么? Perl是一种高级编程语言,以其灵活性和强大的文本处理功能而著称。它最初由Larry Wall于1987年设计,旨在创建一种易于学习且功能强大的语言。Perl广泛应用于...
Perl中的变量类型包括标量(scalar)、数组(array)和哈希(hash),这些数据结构为处理不同类型的数据提供了便利。例如,`$var`代表标量,`@array`是数组,而`%hash`是哈希。 在Perl中,正则表达式(Regular ...
UTHASH 是一个开源的 C 语言库,提供了一种简单且高效的哈希表实现,用于在 C 代码中快速查找和管理数据结构。这个库的主要功能是提供一个宏定义的集合,可以方便地将结构体转化为哈希表,进而进行添加、删除、查找...
标题 "UMAT_Hashin3D_hashin" 指涉的是一个专门针对复合材料损伤分析的三维子程序,该程序基于Hashin破坏准则。在有限元分析(FEA)中,用户自定义材料(User-Defined Material,UMAT)是实现特定材料行为建模的一种...