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

Perl教學(xué) 第10篇 格式化輸出之二

[摘要]三、在打印格式中顯示值我們使用打印格式的主要原因當(dāng)然是格式化存貯在簡(jiǎn)單變量或數(shù)組變量中的值從而生成可讀性好的輸出,這一目的用“值域”來實(shí)現(xiàn)。每個(gè)值域指定一個(gè)值,如變量或表達(dá)式,調(diào)用write函數(shù)時(shí),該值就以值域指定的格式顯示。1、通用的打印格式打印格式的一個(gè)缺點(diǎn)是定義中包含了變量名,例如:form...
三、在打印格式中顯示值
我們使用打印格式的主要原因當(dāng)然是格式化存貯在簡(jiǎn)單變量或數(shù)組變量中的值從而生成可讀性好的輸出,這一目的用“值域”來實(shí)現(xiàn)。每個(gè)值域指定一個(gè)值,如變量或表達(dá)式,調(diào)用write函數(shù)時(shí),該值就以值域指定的格式顯示。
1、通用的打印格式
打印格式的一個(gè)缺點(diǎn)是定義中包含了變量名,例如:

format MYFORMAT =
==========================================================
The winning number is @<<<<< $winnum
==========================================================
.
當(dāng)調(diào)用write輸出此格式時(shí),必須記著它使用了變量$winnum。用子程序和局域變量就可以創(chuàng)建更通用的打印格式。下例從STDIN輸入一個(gè)文件并輸出五個(gè)出現(xiàn)頻率最高的字母及出現(xiàn)次數(shù)。

1 : #!/usr/local/bin/perl
2 :
3 : while ($line = ) {
4 : $line =~ tr/A-Z/a-z/;
5 : $line =~ s/[^a-z]//g;
6 : @letters = split(//, $line);
7 : foreach $letter (@letters) {
8 : $lettercount{$letter} += 1;
9 : }
10: }
11:
12: $~ = "WRITEHEADER";
13: write;
14: $count = 0;
15: foreach $letter (reverse sort occurrences
16: (keys(%lettercount))) {
17: &write_letter($letter, $lettercount{$letter});
18: last if (++$count == 5);
19: }
20:
21: sub occurrences {
22: $lettercount{$a} <=> $lettercount{$b};
23: }
24: sub write_letter {
25: local($letter, $value) = @_;
26:
27: $~ = "WRITELETTER";
28: write;
29: }
30: format WRITEHEADER =
31: The five most frequently occurring letters are:
32: .
33: format WRITELETTER =
34: @: @<<<<<<
35: $letter, $value
36: .
運(yùn)行結(jié)果如下:

$ program
This is a test file.
This test file contains some input.
The quick brown fox jumped over the lazy dog.
^D
The five most frequently occurring letters are:
t: 10
e: 9
i: 8
s: 7
o: 6
$