欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神奇的Perl-哈希与数组(1)

程序员文章站 2022-04-29 16:34:37
...

声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载

神奇的Perl-   哈希与数组

1.     use strictuse warnings

1.1         要求

 

通常来说,这2个命令总是同时使用,并且书写在程序的最前面。

1.2         作用

程序员有时会输错变量名、函数名等, use strictuse warnings对程序员进行了约束,避免了这类简单错误发生,也许算是懒惰的程序员的恶梦吧,毕竟会导致多敲N次键盘。

笔者认为,与其将大量时间花在程序调试排错上,不如约束程序员,使他们少犯简单错误,在工程规模较大的情况下,这种结束效果非常明显。比如以下test.pl的程序(因为程序员疏忽,将$sum+=$l中的$i输成了$l)

#test.pl

for ($i=1;$i<100;$i++){

$sum+=$l;

}

print $sum;

程序输出0,但这并不是程序需要的求和结果。

 

使用use strictuse warnings,程序改成如下:

#test.pl

use strict;

use warnings;

my $i;

my $sum;

for ($i=1;$i<100;$i++){

   $sum+=$l;

}

print $sum;

程序提示错误:

Global symbol "$l" requires explicit package name at test.pl line 7.

Execution of test.pl aborted due to compilation errors.

得益于use strictuse warnings,不习惯使用变量前事先声明的懒惰程序员犯的错误被轻易发现了。

 

1.     哈希

1          

2          

2.1          什么是哈希

哈希是一种数据结构,以数字、字符串等为索引将值存放到其中,或者从中取回值。哈希把任意长度的输入(),通过散列算法,变换成固定长度的散列值输出,将输入视为索引,将输出视为给索引分配的唯一内存地址,地址里存放的是这个索引代表的内容。

1.1  

1  

2  

2.1  

2.2  

2.2.1 访问语法

1.    

2.    

2.1    

2.2    

2.2.1    

2.2.1.1    读取哈希(hash) 元素

语法如下:

$hash变量名{哈希健}

如:

$studentage=$age{张三};

2.2.1.2    修改或增加哈希(hash)元素

语法如下:

$hash变量名{哈希健}=健值。

如:

$age{张三}=28;

2.2.1.3    访问不存在的hash健值

不存在的hash健值的访问结果是undefundef即未定义。

2.2.2 哈希变量声明

对于使用了use strict语句的程序,必须事先声明变量,语法如下:
变量范围 %哈希变量名

如:

 my  %studentage;

2.2.3 哈希拷贝与反转

哈希之间的拷贝语法如下:
%
新变量名 = %被拷贝的变量名;

如:

%newstudentage=%studentage;

哈希反转语法如下:

%newstudentage=reverse %studentage;

哈希的反转指哈希键和哈希值调换,例如:

my %student;

my %newstudent;

%student=("张三"=>"上海","李四"=>"广州","王五"=>"北京");

print  "$student{'张三'}\n";

%newstudent=reverse  %student;

print  "$newstudent{'上海'}\n";

输出如下:

上海

张三

上述代码中,未反转之前,张三为键,上海为值,反转后,上海为键,张三为值。

 

2.2.4  哈希赋值

使用大箭头符号(=>)HASH赋值,箭头左边是健,右边是值。

语法如下:

my  %变量名=(

健名1=>健值1,

健名2=>健值2,

………..

……….

健名n=>健值n

)

如:

#perl3-1.pl

use strict;

use warnings;

#哈希赋值

my %studentage;

%studentage=(

"张三"=>19,

"李四"=>22

);

#访问哈希

print "张三:$studentage{'张三'}";

print "\n";

相关标签: Perl 算法