成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Perl格式化輸出用法指南

開發 架構
Perl語言有很多值得學習的地方,那么你對Perl格式化輸出的用法是否了解呢,這里和大家分享一下,希望本文的介紹能讓你有所收獲。

本文和大家重點討論一下Perl格式化輸出的用法,我們已經見過用print函數將原始的未格式化的文本輸出到文件,本文講述如何用函數write和打印格式來生成格式化的輸出。希望本文的介紹對你的學習有所幫助。

Perl格式化輸出

我們已經見過用print函數將原始的未格式化的文本輸出到文件,本文講述如何用函數write和打印格式來生成格式化的輸出。

一、Perl格式化輸出中定義打印格式

定義打印格式的關鍵字為format,語法為:

formatformatname=
lines_of_output

打印格式名formatname的命名規則與一般變量相同。結束行為一個句號,此行不能有任何其它字符,包括空格,句號必須是該行***個字符。
打印格式的定義象子程序一樣可以放在任何地方,甚至可以放在條件語句中,但是***把它們集中放在程序的開頭或結尾。

二、Perl格式化輸出中顯示打印格式

打印格式的顯示有兩步:
1、將系統變量$~設成所要使用的格式
2、調用函數write
例如:

  1. 1:#!/usr/local/bin/Perl  
  2. 2:  
  3. 3:$~="MYFORMAT";  
  4. 4:write;  
  5. 5:  
  6. 6:formatMYFORMAT=  
  7. 7:===================================  
  8. 8:HereisthetextIwanttodisplay.  
  9. 9:===================================  
  10. 10:.  

 結果輸出如下:

  1. $program 
  2. ===================================  
  3. HereisthetextIwanttodisplay. 
  4. ===================================  
  5. $  

如果不用$~指定打印格式,Perl解釋器就假定要使用的格式名與要寫入的文件變量同名,在本例中,如果不指定使用MYFORMAT,則Perl解釋器試圖使用名為STDOUT的打印格式。

三、Perl格式化輸出在打印格式中顯示值

我們使用打印格式的主要原因當然是格式化存貯在簡單變量或數組變量中的值從而生成可讀性好的輸出,這一目的用“值域”來實現。每個值域指定一個值,如變量或表達式,調用write函數時,該值就以值域指定的格式顯示。

1、通用的打印格式

打印格式的一個缺點是定義中包含了變量名,例如:

  1. formatMYFORMAT=  
  2. ==========================================================  
  3. Thewinningnumberis@<<<<<$winnum 
  4. ==========================================================  

 

◆當調用write輸出此格式時,必須記著它使用了變量$winnum。用子程序和局域變量就可以創建更通用的打印格式。下例從STDIN輸入一個文件并輸出五個出現頻率***的字母及出現次數。

2、格式和局域變量

在上例中,你可能已經注意到子程序write_letter調用write輸出字母及其出現次數,即使格式定義在子程序外部仍能正常工作。在第17行中將字母及其出現次數傳遞給該子程序,在子程序中,打印格式使用局域變量$letter和$value,這樣保證了在foreach循環中每次輸出當前的字母和值。
然而要注意的是,使用my定義的局域變量要求格式定義在子程序內部,否則就不會輸出,因此,用write輸出的局域變量一定要用local定義。(local和my詳見《子程序》一章)
注:Perl4中沒有my函數,故不會有此問題。

3、選擇值域格式

我們已經知道了打印格式和write函數怎么工作,現在來看看值域的格式,見下表:

格式值域含義
@<<<左對齊輸出
@>>>右對齊輸出
@|||中對齊輸出
@##.##固定精度數字
@*多行文本

每個值域的***個字符是行填充符,當使用@字符時,不做文本格式化。對文本的格式化稍后來講。
在上表中,除了多行值域@*,域寬都等于其指定的包含字符@在內的字符個數,例如:
@###.##
表示七個字符寬,小數點前四個,小數點后兩個。

4、輸出值域字符

在打印格式里,特定字符如@、<和>被看作值域定義,那么如何將它們輸出呢?方法如下:

formatSPECIAL=
Thislinecontainsthespecialcharacter@.
"@"

四、Perl格式化輸出中輸出到其它文件

缺省地,函數write將結果輸出到標準輸出文件STDOUT,我們也可以使它將結果輸出到任意其它的文件中。最簡單的方法就是把文件變量作為參數傳遞給write,如:
write(MYFILE);
這樣,write就用缺省的名為MYFILE的打印格式輸出到文件MYFILE中,但是這樣就不能用$~變量來改變所使用的打印格式。系統變量$~只對缺省文件變量起作用,我們可以改變缺省文件變量,改變$~,再調用write,例如:
select(MYFILE);
$~="MYFORMAT";
write;

當select改變缺省文件變量時,它返回當前缺省文件變量的內部表示,這樣我們就可以創建子程序,按自己的想法輸出,又不影響程序的其它部分,如下:

  1. subwrite_to_stdout{  
  2. local($savefile,$saveformat);  
  3. $savefile=select(STDOUT);  
  4. $saveformat=$~;  
  5. $~="MYFORMAT";  
  6. write;  
  7. $~=$saveformat;  
  8. select($savefile);  
  9. }  

 五、Perl格式化輸出中分頁

在輸出到打印機時,可以在每頁頂部輸出相應的信息,這樣的特殊文本叫頁眉。定義頁眉實際上就是定義名為filename_TOP的打印格式,例如給標準輸出文件定義頁眉如下:
formatSTDOUT_TOP=
ConsolidatedWidgetsInc.1994AnnualReport

◆在頁眉的定義中也可以包含值域,頁眉中經常使用的一個特殊值是當前頁碼,存貯在系統變量$%中,如:
formatSTDOUT_TOP=
Page@<<.
$%

◆我們也可以通過改變系統變量$^改變定義頁眉的打印格式名,與$~一樣,$^只對當前缺省文件起作用,因此可以與select函數結合使用。
缺省情況下,每頁長度為60行,可以通過改變$=來改變頁長,如:
$==66;#頁長設為66行
此賦值語句必須出現在***個write語句前。
注:一般使用分頁機制時不用print函數,因為當用write輸出時,Perl解釋器跟蹤每頁的當前行號。如果必須使用print而又不打亂頁計數,可以調整系統變量$-。$-的含義是當前行到頁末之間的行數,當$-達到零時,就開始新的一頁,調整方法如:
print("Hereisalineofoutput\n");
$--=1;

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Hank_Huang/archive/2006/06/16/802144.aspx

【編輯推薦】

  1. 全面認識Perl格式化輸出用法
  2. 學習筆記 詳解Perl格式化輸出
  3. 暢談Perl數組的使用技巧
  4. Perl格式化輸出概念詳解
  5. 技術分享 解析Perl模塊創建和導入方法
責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-16 15:44:57

Perl格式化輸出

2010-07-26 17:09:00

Perl模塊

2010-07-26 15:27:50

Perl foreac

2010-07-15 11:16:25

Perl格式化輸出

2010-07-21 10:10:50

Perl split函

2010-08-03 10:40:29

Flex代碼格式化

2010-07-19 15:25:39

Perl標量轉換函數

2010-07-21 09:38:51

2010-07-23 15:51:27

Perl開發工具

2010-07-20 14:52:51

Perl語法

2010-07-16 15:23:34

Perl格式化輸出

2010-07-16 14:05:58

Perl數組

2010-07-19 10:11:58

Perl流程控制語句

2010-07-15 11:29:25

Perl格式化輸出

2010-07-16 16:00:08

Perl格式化輸出

2010-07-16 14:37:26

Perl格式化輸出

2010-07-21 13:35:22

Perl模式匹配

2013-02-18 13:44:22

CSSSASSWeb

2010-08-12 15:20:49

Flex Builde

2010-07-26 14:54:07

Perlsplit函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91九色在线观看 | 久久久噜噜噜www成人网 | av国产精品 | 欧美亚洲视频在线观看 | 精品欧美黑人一区二区三区 | 日韩在线欧美 | 国产欧美日韩精品在线观看 | 99在线播放| 日本黄色影片在线观看 | 国产第一页在线播放 | 亚洲精品一区在线观看 | 男女视频91| 精品国产精品国产偷麻豆 | 91视频在线看 | 不卡视频一区二区三区 | 欧美一级www片免费观看 | 国产成年人视频 | 国产欧美一区二区三区久久人妖 | 国产一级视频在线播放 | 三级黄色片在线 | 久久另类 | 久久久久国产精品一区二区 | 欧美日本在线观看 | 成人av一区二区亚洲精 | 亚洲精品中文字幕在线观看 | 国产99久久精品一区二区永久免费 | 毛片在线免费播放 | 性在线 | 欧美日韩国产精品一区 | 日韩乱码一二三 | 中文字幕97 | aaaaaaa片毛片免费观看 | 欧美成人一区二区三区 | 国产亚洲成av人片在线观看桃 | 一级黄色录像片子 | 国产精品我不卡 | 在线视频一区二区 | 久久久久久电影 | 日韩精品一区二区三区视频播放 | 99亚洲精品 | 欧美成人一区二区三区 |