神奇的Perl 雜湊和陣列 6

2021-08-30 18:29:05 字數 1868 閱讀 1797

1.1.1

each

、values、keys、sort

1、 each

each一般作用於雜湊和陣列,以2元素的列表形式返回雜湊的鍵值對和陣列的索引、值對。語法如下:

each %hash

each @array

比如:

while ((

$key

,$value

) = each%hash

)

while (($index, $value) = each @array) 

2、

values

values函式以列表形式返回雜湊和陣列的所有值。語法如下:

values %hash

values @array

比如:

for$value

(values

%hash)

3、 keys

keys函式以列表形式返回雜湊和陣列的所有健。語法如下:

keys %hash

keys @array

比如:

for  $key(keys %hash)

以一段程式為例說明keys和values的用法:

$hash=0;

$hash=1;

$array[0]="a";

$array[1]="b";

for  $value(values %hash)

for  $key(keys %hash)

for  $value(values @array)

for  $index(keys @array)

輸出結果如下: 0

1aba

b01

4、    

sort

sort實現對列表排序後返回列表,主要有以下幾種用法:

1) sort列表

按普通字串比較排序.比如:

my @myarr;

@myarr= sort @myarr;

2) sort 子程式名 列表

如果使用了子程式名,可以實現自定義排序,主要分為數字排序、字串排序和綜合排序。$a和$b代表需要比較列表的2個元素。

首先編寫排序用函式。

a) 數字排序

sub by_number;#<=>是飛碟操作符,比較2個數字返回-1,0,1

b) 字串排序

sub by_str;

c) 綜合排序

定義乙個子程式,返回1、0、-1。經過子程式判斷,第乙個引數($a)位於第二個引數($b)之前,返回-1,否則返回1,如果順序不分先後,返回0。

sub by_num elsif ($a>$b) else ;

}然後實施排序,以數字排序為例。

my @myarr;

@myarr= sort by_number @myarr;

1.1.2

完成第三個任務

我們利用sort排序完成內嵌雜湊值的排序

雜湊排序利用

#perl3-6.pl

use strict;

use warnings;

use 5.010;

my  %po;

open pinfo,"

#從perl3-5.txt檔案中讀成員的姓名及城市資訊

foreach my $pinfo()= $jd1;

$info= $jd2;

$info= $jd3;

$info= $jd4;

$info= $jd1+$jd2+$jd3+$jd4;

$po=\%info;}

foreach my $key (reverse sort }<=>$}} keys %po)}\n";

}

perl學習日記6雜湊

思考hash 的方法是,把它看作一堆資料 a barrel of data 參見圖6 2 每乙個資料都有乙個相應的標籤。可以通過標籤訪問此標籤對應的元素。但其中是沒有 第乙個 元素的概念的。在陣列中,陣列元素從0,1 2 開始編號。但在hash 中,沒有確定的順序,因此也沒有第乙個元素。只是一些ke...

雜湊表 hashtable和陣列

一列鍵值對資料,儲存在乙個table中,如何通過資料的關鍵字快速查詢相應值呢?不要告訴我乙個個拿出來比較key啊。大家都知道,在所有的線性資料結構中,陣列的定位速度最快,因為它可通過陣列下標直接定位到相應的陣列空間,就不需要乙個個查詢。而雜湊表就是利用陣列這個能夠快速定位資料的結構解決以上的問題的。...

perl 列表和陣列變數詳解

一 列www.cppcns.com表 列表是包含在括號裡的一串行的值,可以為任何數值,也可為空,如 1,5.3 hello 2 空列表 注 只含有乙個數值的列表 如 43.2 與該數值本身 即 43.2 是不同的,但它們可以互相轉化或賦值。列表例 17,var,a string 17,26 17,v...