`
deepfuture
  • 浏览: 4400397 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80074
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70040
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103348
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285809
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15012
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67559
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32148
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45988
社区版块
存档分类
最新评论

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

阅读更多

声明:本神奇的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";

1
0
分享到:
评论

相关推荐

    perl-5.32.1.tar.gz

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

    神奇的perl-最佳Perl入门

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

    perl神奇入门-最佳perl入门读物

    # 文件名: perl1-1.pl print 'Hello, World!'; # 输出 Hello, World! ``` 这段代码非常简洁,仅包含一条`print`语句和一行注释。在运行这个程序之前,需要确保已经安装了Perl运行环境,并且使用支持Perl的编辑器...

    perl-24学时搞定

    1. **第1学时:Perl入门** - Perl的起源和发展,它的主要用途和优势。 - 安装Perl解释器,了解Perl环境设置。 - 学习Perl的基本语法,包括注释、变量声明、输入/输出语句。 2. **第2学时:Perl的基本构件——...

    Note of Learning Perl--Hashes

    在实际编程中,哈希常与数组配合使用,例如,存储关联数组的索引信息,或者创建索引哈希来加速数组的查找。 七、哈希引用 当哈希的大小非常大,或者需要作为参数传递时,可以使用引用。哈希引用通过`%{}`符号创建...

    ActivePerl-5_ActivePerl5.28_ActivePerl_源码.zip

    Perl的特点包括强大的正则表达式支持、内置数组和哈希数据结构、以及灵活的语法,使得它在处理文本和脚本任务上表现出色。 二、ActivePerl概述 ActivePerl是由ActiveState公司开发的Perl实现,它提供了一个稳定的...

    Perl开发环境.zip

    例如,`if`语句、`for`和`while`循环、数组和哈希数据结构、子程序(subroutine)定义、模块导入等。同时,熟悉一些常用模块如`DateTime`(日期和时间操作)、`DBI`(数据库接口)、`LWP::UserAgent`(HTTP客户端)...

    ActivePerl-x86

    5. **变量和数据类型**:Perl支持多种数据类型,包括标量(如数字和字符串)、数组、哈希(关联数组)以及引用。Perl的变量通常以$、@或%符号开头,分别对应标量、数组和哈希。 6. **正则表达式**:Perl中的正则...

    Perl与JS的对比分析(数组、哈希)

    下面我们将详细对比分析Perl和JS在数组和哈希操作上的区别。 一、数组 1. **数组操作**:在Perl中,数组可以通过`pop`和`push`进行尾部操作,通过`shift`和`unshift`进行头部操作。此外,`splice`函数可以在任意...

    perl-pocket-ref-5.004.1.pdf

    Perl内置了一些用于操作数组和哈希的函数。 - **push`、`pop**:向数组添加或移除元素。 - **shift`、`unshift**:向数组开头添加或移除元素。 ### 15. Regular Expressions Perl拥有强大的正则表达式支持,可...

    perl二维哈希

    Perl中的二维哈希,也称为关联数组的嵌套,是一种数据结构,允许你在一个哈希中存储另一个哈希。这使得处理多级或复杂的数据结构成为可能,特别适合于需要组织多个相关数据集的情况。在Perl中,哈希通常用百分号 `%`...

    mastering-perl-scripts.zip

    2. **字符串与数组操作**:Perl擅长处理文本,字符串操作和数组处理是其强项。学会如何操作字符串,以及如何使用数组和关联数组(哈希)进行数据存储和检索,对于编写脚本至关重要。 3. **文件和目录操作**:Perl...

    Perl-5.18.2

    2. **数组和哈希的改变**:此版本中,Perl对数组和哈希的操作进行了优化,提高了访问速度,同时也引入了一些新的语法糖,如`push @array, $_ for @another_array;`这样的并行赋值。 3. **开关选项和警告**:Perl ...

    perl-scripts实例.tar.gz

    - 变量:Perl支持多种类型的变量,如标量(scalar)、数组(array)和哈希(hash)。变量前缀$表示标量,@表示数组,%表示哈希。 - 引号:单引号(')内的字符串不进行特殊字符转义,双引号(")则会解析特殊字符,如`...

    arm-perl-5.20.1

    4. **数组和哈希的改变**:引入了新的数组和哈希操作,如`push`和`pop`对数组的惰性增长,以及哈希的`delete`操作的优化。 5. **模块和CPAN**:更新了核心模块,并对CPAN(Comprehensive Perl Archive Network)进行...

Global site tag (gtag.js) - Google Analytics