明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

perl案例區(qū)分圖文說(shuō)明教程之11

[摘要]四、增加元素   創(chuàng)建一個(gè)關(guān)聯(lián)數(shù)組元素最簡(jiǎn)單的方法是賦值,如語(yǔ)句$fruit{"bananas"} = 1; 把1賦給關(guān)聯(lián)數(shù)組%fruit下標(biāo)為bananas的元素,如果該元素不存在,則被創(chuàng)建,如果數(shù)組%fruit從未使用過(guò),也被創(chuàng)建。 這一特性使得關(guān)聯(lián)數(shù)組很容易用于計(jì)數(shù)。下面...
四、增加元素

  創(chuàng)建一個(gè)關(guān)聯(lián)數(shù)組元素最簡(jiǎn)單的方法是賦值,如語(yǔ)句$fruit{"bananas"} = 1; 把1賦給關(guān)聯(lián)數(shù)組%fruit下標(biāo)為bananas的元素,如果該元素不存在,則被創(chuàng)建,如果數(shù)組%fruit從未使用過(guò),也被創(chuàng)建。
這一特性使得關(guān)聯(lián)數(shù)組很容易用于計(jì)數(shù)。下面我們用關(guān)聯(lián)數(shù)組改寫上面的程序,注意實(shí)現(xiàn)同樣的功能此程序簡(jiǎn)化了許多。

1 : #!/usr/local/bin/perl
2 :
3 : while ($inputline = ) {
4 : while ($inputline =~ /b[A-Z]S+/g) {
5 : $word = $&;
6 : $word =~ s/[;.,:-]$//; # remove punctuation
7 : $wordlist{$word} += 1;
8 : }
9 : }
10: print ("Capitalized words and number of occurrences:n");
11: foreach $capword (keys(%wordlist)) {
12: print ("$capword: $wordlist{$capword}n");
13: }

運(yùn)行結(jié)果如下:

Here is a line of Input.
This Input contains some Capitalized words.
^D
Capitalized words and number of occurrences:
This: 1
Input: 2
Here: 1
Capitalized: 1

你可以看到,這次程序簡(jiǎn)單多了,讀取輸入并存貯各單詞數(shù)目從20行減少到了7行。
本程序用關(guān)聯(lián)數(shù)組%wordlist跟蹤首字母大寫的單詞,下標(biāo)就用單詞本身,元素值為該單詞出現(xiàn)的次數(shù)。第11行使用了內(nèi)嵌函數(shù)keys()。這個(gè)函數(shù)返回關(guān)聯(lián)數(shù)組的下標(biāo)列表,foreach語(yǔ)句就用此列表循環(huán)。
注:關(guān)聯(lián)數(shù)組總是隨機(jī)存貯的,因此當(dāng)你用keys()訪問(wèn)其所有元素時(shí),不保證元素以任何順序出現(xiàn),特別值得一提的是,它們不會(huì)以被創(chuàng)建的順序出現(xiàn)。
要想控制關(guān)聯(lián)數(shù)組元素出現(xiàn)的次序,可以用sort()函數(shù)對(duì)keys()返回值進(jìn)行排列,如:

foreach $capword (sort keys(%wordlist)) {
print ("$capword: $wordlist{$capword}n");
}  

五、創(chuàng)建關(guān)聯(lián)數(shù)組

  可以用單個(gè)賦值語(yǔ)句創(chuàng)建關(guān)聯(lián)數(shù)組,如:
%fruit = ("apples",17,"bananas",9,"oranges","none");
此語(yǔ)句創(chuàng)建的關(guān)聯(lián)數(shù)組含有下面三個(gè)元素:

下標(biāo)為apples的元素,值為17
下標(biāo)為bananas的元素,值為9
下標(biāo)為oranges的元素,值為none
注:用列表給關(guān)聯(lián)數(shù)組賦值時(shí),Perl5允許使用"=>"或","來(lái)分隔下標(biāo)與值,用"=>"可讀性更好些,上面語(yǔ)句等效于:
%fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none");