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

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

阅读更多

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

 

2.     数组内嵌哈希

声明及定义

my @数组变量名=(

{

 数组第1个元素的哈希键1=>

 数组第1个元素的哈希键2=>2,

 …..

数组第1个元素的 哈希键n=>n

},

{

 数组第2个元素的哈希键1=>

 数组第2个元素的哈希键2=>2,

 …..

 数组第2个元素的哈希键n=>n

}

….

{

 数组第n个元素的哈希键1=>

 数组第n个元素的哈希键2=>2,

 …..

 数组第n个元素的哈希键n=>n

}

);

访问内嵌哈希的键值:

   $数组变量名[数组下标]{哈希键}

例如,我们使用数组内嵌哈希来存储和访问某文具店的库存:

 

品名

价格

数量

钢笔

8.06

50

2B铅笔

2.10

300

胶水

5.80

60

剪刀

12.20

28

存储:

my  @wenju=(

{name=>” 钢笔”,price=>8.06, amount =>50},

{name=>”2B铅笔”,price=>2.10,amont=>300},

{name=>” 胶水”,price=>5.80,amont=>60},

{name=>” 剪刀”,price=>12.20,amont=>28}

);

访问品名和数量:

print $wenju[2]{ name };#品名

print $wenju[2]{ amont };#数量

 

1          

2          

3          

4          

5          

6          

7          

同事小王是某BBS驾游板块的版主,最近想在成员最多的城市组织聚会。小王将该版块发言成员信息导出为qqyou.txt文本文件,其中每行存放一位成员的信息,第一列是姓名,第二列是城市,每列以空格分隔,内容如下:

王兴 湛江

张华 深圳

李光 广州

王安 湛江

张美 深圳

张江美 深圳

胡海明 深圳

黄国刚 深圳

刘灿 湛江

李发 广州

 

哈希的遍历可通过while循环完成,每次循环从哈希变量中取出一对键值。语法如下:

while (( $键名,$键值)=each %哈希变量名){

#对取出的键名值进行操作

}

我们来完成第二个任务,代码如下:

#perl3-4.pl

use strict;

use warnings;

my %zjycity;

my $mycity;

my $cityinfo;

my $name;

my $city;

my $zjycity;

my $citycount;

my $pcount=0;

my @citys,;

 

open CITY,"<perl3-4.txt";

#perl3-4.txt文件中读成员的姓名及城市信息

foreach $cityinfo(<CITY>){

   ($name,$city)=split(' ',$cityinfo);

   $zjycity{$city}++;

}

#循环遍历哈希,并找到成员数最多的城市

while (($zjycity,$citycount)=each %zjycity){ #$zjycity为城市名,$citycount为成员数

   if ($citycount>$pcount) {

       $pcount=$citycount;

       $mycity=$zjycity;

    }

}

print "最佳聚会地点:$mycity\n" ;

以上代码中,%zjycity为哈希变量,首先从文本文件perl3-4.txt读取数据,并生成城市统计哈希%zjycity,键为城市名,键值为城市的成员数目,然后通过循环遍历哈希变量%zjycity,找到成员数最多的城市,即找到最大键值对应的键名。

 

 

 

分享到:
评论

相关推荐

    神奇的perl-最佳PERL入门读物.pdf

    5. **哈希与数组**:哈希和数组是Perl中重要的数据结构。书中通过多个章节详细阐述了它们的创建、遍历、修改和操作方法,以及如何利用它们存储和处理复杂的数据。 6. **处理输入和输出-3**:进一步探讨了更高级的...

    perl-5.32.1.tar.gz

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

    神奇的perl-最佳Perl入门

    ### 知识点四:哈希与数组 #### use strict和use warnings - `use strict;`和`use warnings;`是两个重要的预处理指令,用于提高代码质量和可维护性。 - `use strict;`强制变量必须正确声明。 - `use warnings;`...

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

    - **数组 (@)**:数组是Perl中的一种数据结构,用于存储多个有序的元素。可以通过索引来访问数组中的特定元素,索引从0开始。例如: ```perl @colors = ("Red", "Green", "Blue"); print $colors[0]; # 输出 ...

    perl-24学时搞定

    4. **第4学时:基本构件的堆栈——列表与数组** - 列表的概念,列表赋值和操作。 - 数组的创建、遍历和修改,以及数组函数,如`push`、`pop`、`shift`和`unshift`。 - 引用和引用数组,理解数组引用的用途。 5. ...

    Perl开发环境.zip

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

    Note of Learning Perl--Hashes

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

    ActivePerl-5_ActivePerl5.28_ActivePerl_源码.zip

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

    ActivePerl-x86

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

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

    4. **键存在性检查**:Perl的`exists`函数检查键是否存在于哈希中。JavaScript使用`in`运算符来判断键是否是对象的属性。 5. **删除键**:Perl使用`delete`函数删除哈希中的键,而JavaScript中`delete`是用于删除...

    mastering-perl-scripts.zip

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

    perl二维哈希

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

    Perl-5.18.2

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

    perl-pocket-ref-5.004.1.pdf

    Perl内置了一些用于操作数组和哈希的函数。 - **push`、`pop**:向数组添加或移除元素。 - **shift`、`unshift**:向数组开头添加或移除元素。 ### 15. Regular Expressions 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