自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Perl格式化輸出用法解析

開發(fā) 架構(gòu)
Perl語言有很多值得學(xué)習(xí)的地方,本文就向大家簡單介紹一下Perl格式化輸出的概念,希望通過本文的介紹你一會讓你有所收獲。

在學(xué)習(xí)Perl的過程中,Perl格式化輸出問題經(jīng)常會遇到,我們已經(jīng)見過用print函數(shù)將原始的未格式化的文本輸出到文件,本章講述如何用函數(shù)write和打印格式來生成格式化的輸出。

Perl格式化輸出

一、輸出到其它文件

缺省地,函數(shù)write將結(jié)果輸出到標(biāo)準(zhǔn)輸出文件STDOUT,我們也可以使它將結(jié)果輸出到任意其它的文件中。最簡單的方法就是把文件變量作為參數(shù)傳遞給write,如:
write(MYFILE);
這樣,write就用缺省的名為MYFILE的打印格式輸出到文件MYFILE中,但是這樣就不能用$~變量來改變所使用的打印格式。系統(tǒng)變量$~只對缺省文件變量起作用,我們可以改變?nèi)笔∥募兞?,改?~,再調(diào)用write,例如:
select(MYFILE);
$~="MYFORMAT";
write;

◆當(dāng)select改變?nèi)笔∥募兞繒r,它返回當(dāng)前缺省文件變量的內(nèi)部表示,這樣我們就可以創(chuàng)建子程序,按自己的想法輸出,又不影響程序的其它部分,如下:

 

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

 

二、Perl格式化輸出之分頁

在輸出到打印機(jī)時,可以在每頁頂部輸出相應(yīng)的信息,這樣的特殊文本叫頁眉。定義頁眉實(shí)際上就是定義名為filename_TOP的打印格式,例如給標(biāo)準(zhǔn)輸出文件定義頁眉如下:
formatSTDOUT_TOP=
ConsolidatedWidgetsInc.1994AnnualReport

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

◆我們也可以通過改變系統(tǒng)變量$^改變定義頁眉的打印格式名,與$~一樣,$^只對當(dāng)前缺省文件起作用,因此可以與select函數(shù)結(jié)合使用。
缺省情況下,每頁長度為60行,可以通過改變$=來改變頁長,如:
$==66;#頁長設(shè)為66行

此賦值語句必須出現(xiàn)在第一個write語句前。
注:一般使用分頁機(jī)制時不用print函數(shù),因?yàn)楫?dāng)用write輸出時,Perl解釋器跟蹤每頁的當(dāng)前行號。如果必須使用print而又不打亂頁計數(shù),可以調(diào)整系統(tǒng)變量$-。$-的含義是當(dāng)前行到頁末之間的行數(shù),當(dāng)$-達(dá)到零時,就開始新的一頁,調(diào)整方法如:
print("Hereisalineofoutput\n");
$--=1;

三、Perl格式化輸出之格式化長字符串

我們已經(jīng)學(xué)過值域@*可以輸出多行文本,但它完全將字符串原樣輸出,不加以格式化。在Perl中對長字符串(包含換行)進(jìn)行格式化的值域定義很簡單,只需把打頭的@字符換成^就行了,這種文本格式化中,Perl解釋器在一行中放置盡可能多的單詞。每當(dāng)輸出一行文本,被輸出的子串就從變量中刪除,再次在域值中使用該變量就把剩下的字符串繼續(xù)按格式輸出。當(dāng)內(nèi)容已輸出完畢,該變量就成了空串,再輸出就會輸出空行,為避免輸出空行,可以在值域格式行首加一個~字符。見下例:

  1. 1:#!/usr/local/bin/perl  
  2. 2:  
  3. 3:@quotation=<STDIN>;  
  4. 4:$quotation=join("",@quotation);  
  5. 5:$~="QUOTATION";  
  6. 6:write;  
  7. 7:  
  8. 8:formatQUOTATION=  
  9. 9:Quotationfortheday:  
  10. 10:-----------------------------  
  11. 11:~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  12. 12:$quotation  
  13. 13:~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  14. 14:$quotation  
  15. 15:~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  16. 16:$quotation  
  17. 17:-----------------------------  
  18. 18:.  
  19.  

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

  1. $program  
  2. Anysufficientlyadvancedprogramming  
  3. languageisindistinguishablefrommagic.  
  4. ^D  
  5. Quotationfortheday:  
  6. -----------------------------  
  7. Anysufficientlyadvancedprogramminglanguageis  
  8. indistinguishablefrommagic.  
  9. -----------------------------  
  10. $  
  11.  

 如果把打印格式中行首的~字符去掉,上面的輸出結(jié)果中就會多一行空行。很明顯,當(dāng)字符串長度不明確時,這種用法很不方便,原因就在于它指明了輸出的行數(shù)上限,超過這一上限的字符就不會被輸出,解決方法很簡單,就是在域值格式行首加兩個~字符,這樣就會持續(xù)按格式輸出文本直到輸出完畢,用此方法把上述程序改寫如下:

  1. 1:#!/usr/local/bin/perl  
  2. 2:  
  3. 3:@quotation=<STDIN>;  
  4. 4:$quotation=join("",@quotation);  
  5. 5:$~="QUOTATION";  
  6. 6:write;  
  7. 7:  
  8. 8:formatQUOTATION=  
  9. 9:Quotationfortheday:  
  10. 10:-----------------------------  
  11. 11:~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  12. 12:$quotation  
  13. 13:-----------------------------  
  14. 14:.  

這樣運(yùn)行結(jié)果相同。

四、用printfPerl格式化輸出

還有一種容易掌握和使用的Perl格式化輸出函數(shù),那就是printf,它與C語言中的printf基本上是相同的。printf有兩個參數(shù),一個是字符串,其中含有一個或多個域值形式,另一個是與各域值相對應(yīng)的變量值按一定格式替換,如:
printf("ThenumberIwanttoprintis%d.\n",$number);
各種域值形式如下表:

一些使用細(xì)節(jié)如下:

1、在格式d、o、u或x中,如果整數(shù)值較大或可能較大,可加個l字符,意為長整型,如%ld。
2、%字符后加正整數(shù)表示該域的最小寬度,如果輸出結(jié)果寬度不足,則向右對齊,前面用空格補(bǔ)足,如果該正整數(shù)以數(shù)字0打頭,則補(bǔ)足字符為0。若%字符后為負(fù)整數(shù),則結(jié)果向右對齊。
3、浮點(diǎn)數(shù)域值(%c、%f和%g)中可以指定小數(shù)點(diǎn)前后的寬度,如%8.3f意為總寬度為8個字符,小數(shù)點(diǎn)后(即小數(shù)部分)為3個字符,多出的小數(shù)部分四舍五入。
4、在整數(shù)、字符或字符串的值域中使用如上的小數(shù)形式n.m,整數(shù)部分n為總寬度,小數(shù)部分m為輸出結(jié)果的最大寬度,這樣就保證了輸出結(jié)果前至少有n-m個空格。
 

【編輯推薦】

  1. 全面認(rèn)識Perl格式化輸出用法
  2. Perl文件句柄概念詳解
  3. 實(shí)例解析Perl守護(hù)進(jìn)程用法
  4. Perl模式匹配經(jīng)驗(yàn)總結(jié)
  5. Perl學(xué)習(xí)筆記----Perl格式化輸出詳解

 

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-07-21 14:25:24

Perl格式化輸出

2010-07-15 11:16:25

Perl格式化輸出

2010-07-15 11:29:25

Perl格式化輸出

2010-07-16 16:00:08

Perl格式化輸出

2010-07-16 15:23:34

Perl格式化輸出

2010-07-16 14:37:26

Perl格式化輸出

2024-01-08 22:03:22

python代碼開發(fā)

2010-07-13 13:49:43

Perl foreac

2020-09-02 07:19:41

printf 格式化輸出Unix

2010-07-19 14:13:41

Perl函數(shù)

2010-07-16 08:47:53

Perl if語句

2010-07-20 09:45:04

Perl繼承

2010-07-15 10:22:23

Perl控制結(jié)構(gòu)

2010-07-16 16:56:01

Perl構(gòu)造函數(shù)

2010-07-14 15:32:21

Perl轉(zhuǎn)義字符

2010-07-16 13:10:36

Perl哈希表

2010-07-20 15:02:20

Perl數(shù)組

2010-08-03 10:46:41

Flex代碼格式化

2009-09-04 12:22:41

C#日期格式化

2010-07-21 13:59:59

Perl引用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號