声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1、 each
each一般作用于哈希和数组,以2元素的列表形式返回哈希的键值对和数组的索引、值对。语法如下:
each %hash
each @array
比如:
while (($key, $value) = each %hash) {#$key取得键,$value取得值
print “$key:$value\n";
}
while (($index, $value) = each @array) {#$index取得索引,$value取得值
print "$index:$value\n";
}
2、 values
values函数以列表形式返回哈希和数组的所有值。语法如下:
values %hash
values @array
比如:
for $value(values %hash)
{ #输出hash的所有值(注意不是健值对)。
print “$value\n”;
}
3、 keys
keys函数以列表形式返回哈希和数组的所有健。语法如下:
keys %hash
keys @array
比如:
for $key(keys %hash)
{ #输出hash的所有键(注意不是健值对)。
print "$key\n";
}
以一段程序为例说明keys和values的用法:
$hash{A}=0;
$hash{B}=1;
$array[0]="a";
$array[1]="b";
for $value(values %hash)
{ #输出hash的所有值(注意不是健值对)。
print "$value\n";
}
for $key(keys %hash)
{ #输出hash的所有键(注意不是健值对)。
print "$key\n";
}
for $value(values @array)
{ #输出数组的所有值,注意不是索引、值对)。
print "$value\n";
}
for $index(keys @array)
{ #输出数组的所有索引,注意不是索引、值对)。
print "$index\n";
}
输出结果如下:
0
1
A
B
a
b
0
1
4、 sort
sort实现对列表排序后返回列表,主要有以下几种用法:
1) sort列表
按普通字符串比较排序.比如:
my @myarr;
@myarr= sort @myarr;
2) sort 子程序名 列表
如果使用了子程序名,可以实现自定义排序,主要分为数字排序、字符串排序和综合排序。$a和$b代表需要比较列表的2个元素。
首先编写排序用函数。
A) 数字排序
sub by_number{$a<=>$b};#<=>是飞碟操作符,比较2个数字返回-1,0,1
B) 字符串排序
sub by_str{$a cmp $b};
C) 综合排序
定义一个子程序,返回1、0、-1。经过子程序判断,第一个参数($a)位于第二个参数($b)之前,返回-1,否则返回1,如果顺序不分先后,返回0。
sub by_num{#定义一个数字升序排序
if ($a<$b) {-1} elsif ($a>$b) {1} else {0};
}
然后实施排序,以数字排序为例。
my @myarr;
@myarr= sort by_number @myarr;
我们利用sort排序完成内嵌哈希值的排序
哈希排序利用
#perl3-6.pl
use strict;
use warnings;
use 5.010;
my %po;
open PINFO,"<perl3-5.txt";
#从perl3-5.txt文件中读成员的姓名及城市信息
foreach my $pinfo(<PINFO>){
chomp($pinfo);
my %info;
(my $name, my $jd1,my $jd2,my $jd3,my $jd4)=split('\t',$pinfo);
$info{jd1}= $jd1;
$info{jd2}= $jd2;
$info{jd3}= $jd3;
$info{jd4}= $jd4;
$info{all}= $jd1+$jd2+$jd3+$jd4;
$po{$name}=\%info;
}
foreach my $key (reverse sort {${$po{$a}}{all}<=>${$po{$b}}{all}} keys %po){
print "$key=>${$po{$key}}{all}\n";
}
分享到:
相关推荐
5. **哈希与数组**:哈希和数组是Perl中重要的数据结构。书中通过多个章节详细阐述了它们的创建、遍历、修改和操作方法,以及如何利用它们存储和处理复杂的数据。 6. **处理输入和输出-3**:进一步探讨了更高级的...
- 根据实际需求,使用哈希和数组完成相应的任务。 ### 知识点五:正则表达式 #### Perl正则基础 - 正则表达式是Perl的核心特性之一,用于匹配文本中的模式。 - 基础语法:使用`/pattern/`形式定义正则表达式。 #...
2. **字符串与数组操作**:Perl擅长处理文本,字符串操作和数组处理是其强项。学会如何操作字符串,以及如何使用数组和关联数组(哈希)进行数据存储和检索,对于编写脚本至关重要。 3. **文件和目录操作**:Perl...
在Perl编程语言中,列表(Lists)和数组(Arrays)是两种非常重要的数据结构,它们在处理有序数据时起着核心作用。这篇笔记将深入探讨这两个概念,以及它们在实际编程中的应用。 列表(Lists)在Perl中是一组逗号...
第四章 列表和数组变量 一、列表 二、数组--列表的存贮 1、数组的存取 2、字符串中的方括号和变量替换 3、列表范围 4、数组的输出 5、列表/数组的长度 6、子数组 7、有关数组的库函数 第五章 文件读写 ...
- **列表和数组**:详细讲解了Perl中列表和数组的概念及操作方法。 - **子程序**:讲解了如何定义和调用子程序,以及如何处理参数和返回值。 - **输入与输出**:介绍了Perl中文件句柄的概念,以及如何进行文件读写...
- 默认变量:介绍了Perl中的默认标量变量和数组变量。 2. Perl及其社区 - 社区网站、开发站点、事件和IRC,反映了Perl强大的社区支持。 3. Perl语言特性 - 命名空间:Perl中用于封装和模块化代码的结构。 - ...
- **列表与数组的概念**:介绍Perl中如何使用列表和数组存储数据,以及如何通过索引访问数组中的元素。 **1.5 进行文件操作** - **文件处理**:教授如何使用Perl进行文件读写操作,包括打开文件、读取文件内容、向...
3. **列表和数组.pptx** - 在Perl中,列表和数组是两种重要的数据结构。列表是一组无序的元素,而数组是有序的列表。你可以使用数组来存储和操作多组数据,Perl提供了丰富的数组操作函数,如push、pop、shift、...
9. **字符串和数组操作**:Perl提供了一系列内置函数,如chomp(), chop(), join(), split()等,用于处理字符串和数组。 10. **文件句柄和IO重定向**:Perl可以打开和操作各种类型的文件句柄,包括标准输入、输出和...
- **列表值和数组**:数组是一系列标量值的集合。 - **散列**:用于存储键值对。 - **型团(typeglob)和文件句柄**:用于处理文件和流。 - **输入操作符**:如命令输入(反勾号)、行输入(尖角)等。 #### 二、...
列表和数组是Perl中最常见的数据结构之一。了解如何创建、操作和遍历这些数据结构对于处理大量数据至关重要。 ##### 3.4 文件操作 Perl提供了强大的文件处理能力,包括读写文件、目录操作等功能。熟练掌握文件操作...
- **章节概述**: 介绍Perl中的列表和数组数据结构及其操作方法。 - **学习目标**: 理解列表与数组的区别;掌握数组的操作技巧,包括排序、检索等。 - **关键知识点**: - 数组声明与初始化:@前缀的使用。 - ...
XML::Simple会自动处理XML的嵌套结构,并将其转换为Perl的哈希和数组。然而,它并不总是能够完美地处理复杂的XML文档结构,因为它在处理XML时会进行一些假设,可能会丢失一些XML的特性,如命名空间、属性、文本节点...
#### 六、列表和数组 - **数组操作**: - 访问元素:使用索引来访问数组中的元素。 - 特殊索引:例如`@_`作为默认变量使用。 - 列表操作符:如`pop`、`push`、`shift`、`unshift`等。 - **foreach循环**: - 默认...
**2.8 列表值和数组** - 列表值通常是数组元素的集合。 **2.8.1 列表赋值** - 将一个列表赋值给另一个列表或数组。 **2.8.2 数组长度** - 使用`scalar`函数获取数组长度。 **2.9 散列** - 散列是Perl中的一种...