已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章 打印與格式化輸出,9.1 使用print函數(shù),使用print函數(shù)可以將原始的末格式化的文本存入到文件,如果打印到屏幕以及幫助調(diào)試腳本,它的標(biāo)準(zhǔn)語(yǔ)法如下: Print FILEHANDLE list; 它的作用是將list中的數(shù)據(jù)打印到FILEHANDLE為文件句柄的文件中,還可以省略部份參數(shù),寫為如下的形式:,Print FILEHANDLE; 表示將perl5內(nèi)置變量$內(nèi)容打印到FILEHANDLE Print list表示將數(shù)據(jù)打印到默認(rèn)的文件句柄. Print:將內(nèi)置變量$打印到默認(rèn)的文件句柄,9.1.1設(shè)置默認(rèn)文件句柄 Print函數(shù)一般使用默認(rèn)文件句柄STDOUT,在perl5啟動(dòng)時(shí),會(huì)自動(dòng)打開文件句柄STDOUT. 它的初始設(shè)置是計(jì)算機(jī)的顯示器,可以在程序中自定義STDOUT的設(shè)置,但一般采用select函數(shù)來(lái)改革者變默認(rèn)的文件句柄,而不用改變STDOUT的設(shè)置. 語(yǔ)法如下: select (FILEHANDLE);,默認(rèn)文件句柄是全局變量,所以在使用結(jié)束后,要注意使它恢復(fù)到原先的值,這可以通過(guò)使用動(dòng)態(tài)作用域來(lái)實(shí)現(xiàn),也可以讓子程序在使用全局變量時(shí)不會(huì)給其它程序帶來(lái)影響。,9.1.2 使用heredoc操作符 heredoc操作符,即表示here文檔,用于打印輸出當(dāng)前的文件句柄,一般情況下,默認(rèn)的文件句柄是STDOUT,它的語(yǔ)法如下: Print heredoc maker;,在后可以標(biāo)明一個(gè)結(jié)束字符串,后面用此字符串來(lái)結(jié)束引號(hào)引起的文本,從當(dāng)前行一直到結(jié)束字符串再次出現(xiàn)的中間所有行都同屬于這一個(gè)字符串。 結(jié)束字符串可以是一個(gè)標(biāo)識(shí)符或者某些引號(hào)括起來(lái)的文本。,如果結(jié)束字符串用引號(hào)括起,所使用的引號(hào)的類型決定對(duì)整個(gè)字符串的處理,和正則表達(dá)式一樣,一個(gè)末加引號(hào)的標(biāo)識(shí)符和用雙引號(hào)括起來(lái)是一樣的。 但在和標(biāo)識(shí)符中間不能有空格,如果有的話,會(huì)被認(rèn)為是空標(biāo)志符。 而結(jié)束字符串必須單獨(dú)一行出現(xiàn),不加引號(hào)且周圍沒有空格。,如: Print “eof”; Print eof; 都是可行的,這里語(yǔ)句中的分號(hào)不能省略。,9.2格式化輸出,用write函數(shù)和打印格式可以得到格式化輸出,write函數(shù)的語(yǔ)法和print函數(shù)的語(yǔ)法類似,如下: Write FILEHANDLE; 或 Write; 表達(dá)式中如果沒有句柄,則使用默認(rèn)或選擇的句柄,文件句柄有相關(guān)聯(lián)的format語(yǔ)句,用于定義打印格式。,9.2.1 定義打印格式 定義打印格式的關(guān)鍵字為format,語(yǔ)法為: format formatname=lines_of_output; 以關(guān)鍵字format開始,后面是打印格式名formatname,它和一般變量的命名規(guī)則相同。,如果格式名和文件句柄同名,則用它作為該文件句柄的默認(rèn)打印格式。如果格式名為文件句柄加上_TOP后綴,則用它作為該文件句柄的默認(rèn)表頭格式(標(biāo)題)。格式名后面是一個(gè)等號(hào),格式聲明的第二部分是定義要打印到文件句柄的內(nèi)容,第三部份是一個(gè)結(jié)束行,結(jié)束行僅為一個(gè)點(diǎn)號(hào),不能再用任何其它符號(hào)。且點(diǎn)行必須在該行第一個(gè)字符。,9.2.2 顯示打印格式 利用一個(gè)簡(jiǎn)單的write函數(shù)和適當(dāng)?shù)膄ormat語(yǔ)句,就可以向文件或屏幕發(fā)送大量的格式化數(shù)據(jù),打印固定格式一般可以分成兩步: (1)將系統(tǒng)變量$_設(shè)成為所要使用的格式; (2)調(diào)用函數(shù)write.,例9-1 #!/usr/bin/perl $=“MYFORMAT“; write; format MYFORMAT= = 靜夜思 床前明月光, 疑是地上霜。 舉頭望明月, 低頭思故鄉(xiāng)。 = .,要特別注意,在最后一行的開頭不能少了點(diǎn)號(hào),下面是程序的運(yùn)行結(jié)果。,9.2.3格式輸出變量 使用打印格式的主要目的是格式化存儲(chǔ)在簡(jiǎn)單變量或數(shù)變量中的值從而生成可讀性好的輸出,這可以用“值域”來(lái)實(shí)現(xiàn),每個(gè)值域指定一個(gè)值,調(diào)用write函數(shù)就可以用值域指定的格式來(lái)顯示 。,1.通用的打印格式 打印格式的一個(gè)缺點(diǎn)是定義中包含了變量名,如: format MYFORMAT= = The number is ! $number = .,例9.2 格式輸出變量 #!/usr/bin/perl %agehash=( “Birdy“=21, “Alian“=18, “Gaole“=25, “Feng“=23, “Marilin“=20, “zoruo“=35 ); $=“WRITEHEADER_TOP“; write; $=“WRITEHEADER“; write;,$count=0; foreach $name(sort keys(%agehash) format WRITEHEADER_TOP= Name Age = . format WRITELETTER= $name,$age . format WRITEHEADER= * .,2.格式名 例9.2中將格式命名為文件句柄名,就可以把這種格式和文件句柄相關(guān)聯(lián)。 表頭格式在每個(gè)新數(shù)據(jù)頁(yè)面打印,表頭格式通過(guò)在文件句柄后加上關(guān)鍵字_TOP來(lái)定義并與文件句柄關(guān)聯(lián)(表頭格式關(guān)聯(lián)有考慮大小寫,一定要用_TOP).,在例9.2中, 要注意一下,定義時(shí)的形式,有時(shí)兩個(gè)是同名的情況下,要注意區(qū)分,如: $=“WRITEHEADER_TOP“; write; $=“WRITEHEADER“; write; 這兩句都是輸出表頭,利用不同的格式名去賦值,可以實(shí)現(xiàn)區(qū)別的效果。,3.定義值域格式 值域的定義格式也可以有多種,一種是直接定義好格式,如: format WRITEHEADER_TOP= Name Age = .,另一種是定義變量在其中的對(duì)齊方式,然后再確定從哪列開始打印后面變量和為每個(gè)變量分配多少個(gè)輸出字符,用到的符號(hào)是和號(hào),對(duì)于大多數(shù)格式化工作,每個(gè)對(duì)齊字段以號(hào)開頭,而號(hào)告訴重復(fù)與該號(hào)相關(guān)聯(lián)的變量,變量應(yīng)出現(xiàn)在位置行的每個(gè)號(hào)及其它字符所定義的位置上。,如: format WRITELETTER= $name,$age . format WRITEHEADER= * .,這里,每個(gè)值域的第一行字符是行填充符,當(dāng)使用字符時(shí),不做文本格式化。 除了多行值域符號(hào)*外,域?qū)挾嫉扔谄渲付ǖ陌?hào)在內(nèi)的字符個(gè)數(shù)。 如: #.# 表示共有7位的寬度,小數(shù)點(diǎn)前4個(gè),小數(shù)點(diǎn)后2個(gè)。,9.2.4 特殊變量格式化 我們可以把格式變量與文件句柄相連,為了應(yīng)用的方便,perl也允許使用特殊變量來(lái)進(jìn)行文件句柄的關(guān)聯(lián)。 在perl中,有一個(gè)模塊叫English.pm,在程序的頭部加上“use English”這個(gè)代碼,就可以在程序中使用別名了。,9.2.5 輸出文件 默認(rèn)的,write函數(shù)將結(jié)果輸出到標(biāo)準(zhǔn)輸出文件STDOUT,也可以使它將結(jié)果輸出到任意其它的文件中。最簡(jiǎn)單的辦法是把文件句柄作為參數(shù)傳遞給write函數(shù),如下所示: write (MYFILE); write函數(shù)就用默認(rèn)名為MYFILE的打印格式輸出到文件MYFILE中,但這樣就不能用$變量來(lái)改變所使用的打印格式,系統(tǒng)變量$只對(duì)默認(rèn)文件句柄起作用。,可以先改變默認(rèn)文件句柄,然后改變$,再調(diào)用write函數(shù),如: select (MYFILE); $=“MYFORMST”; write;,用select函數(shù)改變默認(rèn)文件句柄時(shí),它返回當(dāng)前默認(rèn)文件句柄的內(nèi)部表示,這樣就可以創(chuàng)建子程序,按自己的想法輸出,又不影響程序的其它部份,如下面的程序段: sub write_to_stdout local$savefile,$saveformat; $savefile=select(STDOUT); $saveformat=$; $=“MYFORMAT”; write; $=$saveformat; select($savefile); ,在輸出到打印機(jī)時(shí),可以每頁(yè)頂部輸出相應(yīng)的信息,這些特殊文本稱為頁(yè)眉。定義頁(yè)眉實(shí)際上就是定義名為filename_TOP的打印格式,如: format STDOUT_TOP= consolidated widgets inc.1004 Annual Report,對(duì)word熟悉的同學(xué)應(yīng)該知道,頁(yè)眉中常見的一個(gè)值就是當(dāng)前的頁(yè)碼,在perl里,它是存在系統(tǒng)變量$%中的。 如: format STDOUT_TOP= page $% .,也可以通過(guò)改變系統(tǒng)$改變定義頁(yè)眉的打印格式名,與$一樣,$只對(duì)當(dāng)前默認(rèn)文件起作用,可以和select函數(shù)結(jié)合使用。 默認(rèn)情況下,每頁(yè)長(zhǎng)度為60行,但可以通過(guò)對(duì)$=的改變來(lái)改變頁(yè)長(zhǎng) 如: $=66; 意思是頁(yè)長(zhǎng)($=)為66頁(yè)。,9.2.6 處理長(zhǎng)字符串 在使用format語(yǔ)句時(shí),每行數(shù)據(jù)都設(shè)置為特定長(zhǎng)度,這樣可以使所有的數(shù)據(jù)行和列對(duì)齊,如果要處理長(zhǎng)信息,就要在格式行中使用 或* 值域*雖然可以輸出多行文本,但它只是將字符原樣輸出,不加以格式化。,在perl中對(duì)長(zhǎng)字符串(包含換行)進(jìn)行格式化的值域定義很簡(jiǎn)單,只需把打頭的換成即可。這種文本格式化中,perl解釋器在一行中將放置盡可能多的單詞。 每當(dāng)輸出一行文本,被輸出的子串就從變量中刪除,再次在值域中使用該變量就把剩下的字符串繼續(xù)按格式輸出。當(dāng)內(nèi)容全部輸出完后,這個(gè)變量就成了空串,就會(huì)輸出一個(gè)空行,有時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人版權(quán)使用合同范本4篇
- 2025年度水利設(shè)施維護(hù)承包合同樣本4篇
- 2025年銷售經(jīng)理勞動(dòng)合同編制與執(zhí)行手冊(cè)2篇
- 2025年度文化藝術(shù)館軟裝承接合同樣本4篇
- 二零二五版臨時(shí)租車合同售后服務(wù)承諾4篇
- 2024-2026年中國(guó)軟件產(chǎn)業(yè)園行業(yè)發(fā)展前景及行業(yè)投資策略研究報(bào)告
- 2025年中國(guó)喹硫平行業(yè)發(fā)展運(yùn)行現(xiàn)狀及投資潛力預(yù)測(cè)報(bào)告
- 2025年中國(guó)新型平板跑步機(jī)市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2025年中國(guó)單方精油行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 2024-2029年中國(guó)茶產(chǎn)業(yè)市場(chǎng)前瞻與投資戰(zhàn)略規(guī)劃分析報(bào)告
- TD/T 1060-2021 自然資源分等定級(jí)通則(正式版)
- 人教版二年級(jí)下冊(cè)口算題大全1000道可打印帶答案
- 《創(chuàng)傷失血性休克中國(guó)急診專家共識(shí)(2023)》解讀
- 倉(cāng)庫(kù)智能化建設(shè)方案
- 海外市場(chǎng)開拓計(jì)劃
- 2024年度國(guó)家社會(huì)科學(xué)基金項(xiàng)目課題指南
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
- 紅色歷史研學(xué)旅行課程設(shè)計(jì)
- 如何避免護(hù)理患者投訴
評(píng)論
0/150
提交評(píng)論