2. 数组内嵌哈希
声明及定义
my @数组变量名=(
{
数组第1个元素的哈希键1=>值1 ,
数组第1个元素的哈希键2=>值2,
…..
数组第1个元素的 哈希键n=>值n
},
{
数组第2个元素的哈希键1=>值1 ,
数组第2个元素的哈希键2=>值2,
…..
数组第2个元素的哈希键n=>值n
}
….
{
数组第n个元素的哈希键1=>值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 };#数量
同事小王是某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,找到成员数最多的城市,即找到最大键值对应的键名。
分享到:
相关推荐
5. **哈希与数组**:哈希和数组是Perl中重要的数据结构。书中通过多个章节详细阐述了它们的创建、遍历、修改和操作方法,以及如何利用它们存储和处理复杂的数据。 6. **处理输入和输出-3**:进一步探讨了更高级的...
- **变量**:Perl支持多种类型的变量,如标量(scalar)、数组(array)、哈希(hash)等,以及引用(reference)机制,允许创建复杂的数据结构。 - **正则表达式**:Perl的正则表达式功能强大且灵活,可以进行模式...
### 知识点四:哈希与数组 #### use strict和use warnings - `use strict;`和`use warnings;`是两个重要的预处理指令,用于提高代码质量和可维护性。 - `use strict;`强制变量必须正确声明。 - `use warnings;`...
- **数组 (@)**:数组是Perl中的一种数据结构,用于存储多个有序的元素。可以通过索引来访问数组中的特定元素,索引从0开始。例如: ```perl @colors = ("Red", "Green", "Blue"); print $colors[0]; # 输出 ...
4. **第4学时:基本构件的堆栈——列表与数组** - 列表的概念,列表赋值和操作。 - 数组的创建、遍历和修改,以及数组函数,如`push`、`pop`、`shift`和`unshift`。 - 引用和引用数组,理解数组引用的用途。 5. ...
例如,`if`语句、`for`和`while`循环、数组和哈希数据结构、子程序(subroutine)定义、模块导入等。同时,熟悉一些常用模块如`DateTime`(日期和时间操作)、`DBI`(数据库接口)、`LWP::UserAgent`(HTTP客户端)...
在实际编程中,哈希常与数组配合使用,例如,存储关联数组的索引信息,或者创建索引哈希来加速数组的查找。 七、哈希引用 当哈希的大小非常大,或者需要作为参数传递时,可以使用引用。哈希引用通过`%{}`符号创建...
Perl的特点包括强大的正则表达式支持、内置数组和哈希数据结构、以及灵活的语法,使得它在处理文本和脚本任务上表现出色。 二、ActivePerl概述 ActivePerl是由ActiveState公司开发的Perl实现,它提供了一个稳定的...
5. **变量和数据类型**:Perl支持多种数据类型,包括标量(如数字和字符串)、数组、哈希(关联数组)以及引用。Perl的变量通常以$、@或%符号开头,分别对应标量、数组和哈希。 6. **正则表达式**:Perl中的正则...
4. **键存在性检查**:Perl的`exists`函数检查键是否存在于哈希中。JavaScript使用`in`运算符来判断键是否是对象的属性。 5. **删除键**:Perl使用`delete`函数删除哈希中的键,而JavaScript中`delete`是用于删除...
2. **字符串与数组操作**:Perl擅长处理文本,字符串操作和数组处理是其强项。学会如何操作字符串,以及如何使用数组和关联数组(哈希)进行数据存储和检索,对于编写脚本至关重要。 3. **文件和目录操作**:Perl...
Perl中的二维哈希,也称为关联数组的嵌套,是一种数据结构,允许你在一个哈希中存储另一个哈希。这使得处理多级或复杂的数据结构成为可能,特别适合于需要组织多个相关数据集的情况。在Perl中,哈希通常用百分号 `%`...
2. **数组和哈希的改变**:此版本中,Perl对数组和哈希的操作进行了优化,提高了访问速度,同时也引入了一些新的语法糖,如`push @array, $_ for @another_array;`这样的并行赋值。 3. **开关选项和警告**:Perl ...
Perl内置了一些用于操作数组和哈希的函数。 - **push`、`pop**:向数组添加或移除元素。 - **shift`、`unshift**:向数组开头添加或移除元素。 ### 15. Regular Expressions Perl拥有强大的正则表达式支持,可...
- 变量:Perl支持多种类型的变量,如标量(scalar)、数组(array)和哈希(hash)。变量前缀$表示标量,@表示数组,%表示哈希。 - 引号:单引号(')内的字符串不进行特殊字符转义,双引号(")则会解析特殊字符,如`...
4. **数组和哈希的改变**:引入了新的数组和哈希操作,如`push`和`pop`对数组的惰性增长,以及哈希的`delete`操作的优化。 5. **模块和CPAN**:更新了核心模块,并对CPAN(Comprehensive Perl Archive Network)进行...