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

神奇的Perl-哈希和数组(6)

阅读更多

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

1.1.1 eachvalueskeyssort

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";

}

以一段程序为例说明keysvalues的用法:

$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) 综合排序

定义一个子程序,返回10-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";

}

分享到:
评论

相关推荐

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

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

    神奇的perl-最佳Perl入门

    - 根据实际需求,使用哈希和数组完成相应的任务。 ### 知识点五:正则表达式 #### Perl正则基础 - 正则表达式是Perl的核心特性之一,用于匹配文本中的模式。 - 基础语法:使用`/pattern/`形式定义正则表达式。 #...

    mastering-perl-scripts.zip

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

    Note of Learning Perl--Lists and Arrays

    在Perl编程语言中,列表(Lists)和数组(Arrays)是两种非常重要的数据结构,它们在处理有序数据时起着核心作用。这篇笔记将深入探讨这两个概念,以及它们在实际编程中的应用。 列表(Lists)在Perl中是一组逗号...

    perl 程序开发教程

    第四章 列表和数组变量 一、列表 二、数组--列表的存贮 1、数组的存取 2、字符串中的方括号和变量替换 3、列表范围 4、数组的输出 5、列表/数组的长度 6、子数组 7、有关数组的库函数 第五章 文件读写 ...

    perl basic

    - **列表和数组**:详细讲解了Perl中列表和数组的概念及操作方法。 - **子程序**:讲解了如何定义和调用子程序,以及如何处理参数和返回值。 - **输入与输出**:介绍了Perl中文件句柄的概念,以及如何进行文件读写...

    Modern Perl

    - 默认变量:介绍了Perl中的默认标量变量和数组变量。 2. Perl及其社区 - 社区网站、开发站点、事件和IRC,反映了Perl强大的社区支持。 3. Perl语言特性 - 命名空间:Perl中用于封装和模块化代码的结构。 - ...

    Perl编程24学时教程

    - **列表与数组的概念**:介绍Perl中如何使用列表和数组存储数据,以及如何通过索引访问数组中的元素。 **1.5 进行文件操作** - **文件处理**:教授如何使用Perl进行文件读写操作,包括打开文件、读取文件内容、向...

    Perl入门培训资料

    3. **列表和数组.pptx** - 在Perl中,列表和数组是两种重要的数据结构。列表是一组无序的元素,而数组是有序的列表。你可以使用数组来存储和操作多组数据,Perl提供了丰富的数组操作函数,如push、pop、shift、...

    perl 入门 13-25

    9. **字符串和数组操作**:Perl提供了一系列内置函数,如chomp(), chop(), join(), split()等,用于处理字符串和数组。 10. **文件句柄和IO重定向**:Perl可以打开和操作各种类型的文件句柄,包括标准输入、输出和...

    perl语言编程--520页PDF整合版

    - **列表值和数组**:数组是一系列标量值的集合。 - **散列**:用于存储键值对。 - **型团(typeglob)和文件句柄**:用于处理文件和流。 - **输入操作符**:如命令输入(反勾号)、行输入(尖角)等。 #### 二、...

    perl脚本了解及学习

    列表和数组是Perl中最常见的数据结构之一。了解如何创建、操作和遍历这些数据结构对于处理大量数据至关重要。 ##### 3.4 文件操作 Perl提供了强大的文件处理能力,包括读写文件、目录操作等功能。熟练掌握文件操作...

    Learning_Perl_Student_Workbook(2nd,2012.01)

    - **章节概述**: 介绍Perl中的列表和数组数据结构及其操作方法。 - **学习目标**: 理解列表与数组的区别;掌握数组的操作技巧,包括排序、检索等。 - **关键知识点**: - 数组声明与初始化:@前缀的使用。 - ...

    perl的xml::simple解析文件

    XML::Simple会自动处理XML的嵌套结构,并将其转换为Perl的哈希和数组。然而,它并不总是能够完美地处理复杂的XML文档结构,因为它在处理XML时会进行一些假设,可能会丢失一些XML的特性,如命名空间、属性、文本节点...

    perl语言入门(第四版)

    #### 六、列表和数组 - **数组操作**: - 访问元素:使用索引来访问数组中的元素。 - 特殊索引:例如`@_`作为默认变量使用。 - 列表操作符:如`pop`、`push`、`shift`、`unshift`等。 - **foreach循环**: - 默认...

    PERL语言编程

    **2.8 列表值和数组** - 列表值通常是数组元素的集合。 **2.8.1 列表赋值** - 将一个列表赋值给另一个列表或数组。 **2.8.2 数组长度** - 使用`scalar`函数获取数组长度。 **2.9 散列** - 散列是Perl中的一种...

Global site tag (gtag.js) - Google Analytics