




已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第九章 打印與格式化輸出,9.1 使用print函數(shù),使用print函數(shù)可以將原始的末格式化的文本存入到文件,如果打印到屏幕以及幫助調(diào)試腳本,它的標(biāo)準(zhǔn)語法如下: 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啟動時,會自動打開文件句柄STDOUT. 它的初始設(shè)置是計算機的顯示器,可以在程序中自定義STDOUT的設(shè)置,但一般采用select函數(shù)來改革者變默認(rèn)的文件句柄,而不用改變STDOUT的設(shè)置. 語法如下: select (FILEHANDLE);,默認(rèn)文件句柄是全局變量,所以在使用結(jié)束后,要注意使它恢復(fù)到原先的值,這可以通過使用動態(tài)作用域來實現(xiàn),也可以讓子程序在使用全局變量時不會給其它程序帶來影響。,9.1.2 使用heredoc操作符 heredoc操作符,即表示here文檔,用于打印輸出當(dāng)前的文件句柄,一般情況下,默認(rèn)的文件句柄是STDOUT,它的語法如下: Print heredoc maker;,在后可以標(biāo)明一個結(jié)束字符串,后面用此字符串來結(jié)束引號引起的文本,從當(dāng)前行一直到結(jié)束字符串再次出現(xiàn)的中間所有行都同屬于這一個字符串。 結(jié)束字符串可以是一個標(biāo)識符或者某些引號括起來的文本。,如果結(jié)束字符串用引號括起,所使用的引號的類型決定對整個字符串的處理,和正則表達(dá)式一樣,一個末加引號的標(biāo)識符和用雙引號括起來是一樣的。 但在和標(biāo)識符中間不能有空格,如果有的話,會被認(rèn)為是空標(biāo)志符。 而結(jié)束字符串必須單獨一行出現(xiàn),不加引號且周圍沒有空格。,如: Print “eof”; Print eof; 都是可行的,這里語句中的分號不能省略。,9.2格式化輸出,用write函數(shù)和打印格式可以得到格式化輸出,write函數(shù)的語法和print函數(shù)的語法類似,如下: Write FILEHANDLE; 或 Write; 表達(dá)式中如果沒有句柄,則使用默認(rèn)或選擇的句柄,文件句柄有相關(guān)聯(lián)的format語句,用于定義打印格式。,9.2.1 定義打印格式 定義打印格式的關(guān)鍵字為format,語法為: format formatname=lines_of_output; 以關(guān)鍵字format開始,后面是打印格式名formatname,它和一般變量的命名規(guī)則相同。,如果格式名和文件句柄同名,則用它作為該文件句柄的默認(rèn)打印格式。如果格式名為文件句柄加上_TOP后綴,則用它作為該文件句柄的默認(rèn)表頭格式(標(biāo)題)。格式名后面是一個等號,格式聲明的第二部分是定義要打印到文件句柄的內(nèi)容,第三部份是一個結(jié)束行,結(jié)束行僅為一個點號,不能再用任何其它符號。且點行必須在該行第一個字符。,9.2.2 顯示打印格式 利用一個簡單的write函數(shù)和適當(dāng)?shù)膄ormat語句,就可以向文件或屏幕發(fā)送大量的格式化數(shù)據(jù),打印固定格式一般可以分成兩步: (1)將系統(tǒng)變量$_設(shè)成為所要使用的格式; (2)調(diào)用函數(shù)write.,例9-1 #!/usr/bin/perl $=“MYFORMAT“; write; format MYFORMAT= = 靜夜思 床前明月光, 疑是地上霜。 舉頭望明月, 低頭思故鄉(xiāng)。 = .,要特別注意,在最后一行的開頭不能少了點號,下面是程序的運行結(jié)果。,9.2.3格式輸出變量 使用打印格式的主要目的是格式化存儲在簡單變量或數(shù)變量中的值從而生成可讀性好的輸出,這可以用“值域”來實現(xiàn),每個值域指定一個值,調(diào)用write函數(shù)就可以用值域指定的格式來顯示 。,1.通用的打印格式 打印格式的一個缺點是定義中包含了變量名,如: 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)。 表頭格式在每個新數(shù)據(jù)頁面打印,表頭格式通過在文件句柄后加上關(guān)鍵字_TOP來定義并與文件句柄關(guān)聯(lián)(表頭格式關(guān)聯(lián)有考慮大小寫,一定要用_TOP).,在例9.2中, 要注意一下,定義時的形式,有時兩個是同名的情況下,要注意區(qū)分,如: $=“WRITEHEADER_TOP“; write; $=“WRITEHEADER“; write; 這兩句都是輸出表頭,利用不同的格式名去賦值,可以實現(xiàn)區(qū)別的效果。,3.定義值域格式 值域的定義格式也可以有多種,一種是直接定義好格式,如: format WRITEHEADER_TOP= Name Age = .,另一種是定義變量在其中的對齊方式,然后再確定從哪列開始打印后面變量和為每個變量分配多少個輸出字符,用到的符號是和號,對于大多數(shù)格式化工作,每個對齊字段以號開頭,而號告訴重復(fù)與該號相關(guān)聯(lián)的變量,變量應(yīng)出現(xiàn)在位置行的每個號及其它字符所定義的位置上。,如: format WRITELETTER= $name,$age . format WRITEHEADER= * .,這里,每個值域的第一行字符是行填充符,當(dāng)使用字符時,不做文本格式化。 除了多行值域符號*外,域?qū)挾嫉扔谄渲付ǖ陌栐趦?nèi)的字符個數(shù)。 如: #.# 表示共有7位的寬度,小數(shù)點前4個,小數(shù)點后2個。,9.2.4 特殊變量格式化 我們可以把格式變量與文件句柄相連,為了應(yīng)用的方便,perl也允許使用特殊變量來進(jìn)行文件句柄的關(guān)聯(lián)。 在perl中,有一個模塊叫English.pm,在程序的頭部加上“use English”這個代碼,就可以在程序中使用別名了。,9.2.5 輸出文件 默認(rèn)的,write函數(shù)將結(jié)果輸出到標(biāo)準(zhǔn)輸出文件STDOUT,也可以使它將結(jié)果輸出到任意其它的文件中。最簡單的辦法是把文件句柄作為參數(shù)傳遞給write函數(shù),如下所示: write (MYFILE); write函數(shù)就用默認(rèn)名為MYFILE的打印格式輸出到文件MYFILE中,但這樣就不能用$變量來改變所使用的打印格式,系統(tǒng)變量$只對默認(rèn)文件句柄起作用。,可以先改變默認(rèn)文件句柄,然后改變$,再調(diào)用write函數(shù),如: select (MYFILE); $=“MYFORMST”; write;,用select函數(shù)改變默認(rèn)文件句柄時,它返回當(dāng)前默認(rèn)文件句柄的內(nèi)部表示,這樣就可以創(chuàng)建子程序,按自己的想法輸出,又不影響程序的其它部份,如下面的程序段: sub write_to_stdout local$savefile,$saveformat; $savefile=select(STDOUT); $saveformat=$; $=“MYFORMAT”; write; $=$saveformat; select($savefile); ,在輸出到打印機時,可以每頁頂部輸出相應(yīng)的信息,這些特殊文本稱為頁眉。定義頁眉實際上就是定義名為filename_TOP的打印格式,如: format STDOUT_TOP= consolidated widgets inc.1004 Annual Report,對word熟悉的同學(xué)應(yīng)該知道,頁眉中常見的一個值就是當(dāng)前的頁碼,在perl里,它是存在系統(tǒng)變量$%中的。 如: format STDOUT_TOP= page $% .,也可以通過改變系統(tǒng)$改變定義頁眉的打印格式名,與$一樣,$只對當(dāng)前默認(rèn)文件起作用,可以和select函數(shù)結(jié)合使用。 默認(rèn)情況下,每頁長度為60行,但可以通過對$=的改變來改變頁長 如: $=66; 意思是頁長($=)為66頁。,9.2.6 處理長字符串 在使用format語句時,每行數(shù)據(jù)都設(shè)置為特定長度,這樣可以使所有的數(shù)據(jù)行和列對齊,如果要處理長信息,就要在格式行中使用 或* 值域*雖然可以輸出多行文本,但它只是將字符原樣輸出,不加以格式化。,在perl中對長字符串(包含換行)進(jìn)行格式化的值域定義很簡單,只需把打頭的換成即可。這種文本格式化中,perl解釋器在一行中將放置盡可能多的單詞。 每當(dāng)輸出一行文本,被輸出的子串就從變量中刪除,再次在值域中使用該變量就把剩下的字符串繼續(xù)按格式輸出。當(dāng)內(nèi)容全部輸出完后,這個變量就成了空串,就會輸出一個空行,有時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025重慶廣播電視集團(tuán)(總臺)招聘11人筆試參考題庫附帶答案詳解
- 2025西安報業(yè)傳媒集團(tuán)招聘(23人)筆試參考題庫附帶答案詳解
- 2025湖南興湘科技創(chuàng)新公司招聘6人筆試參考題庫附帶答案詳解
- 2025格力電器(鄭州)有限公司招聘筆試參考題庫附帶答案詳解
- 2025年中鐵特貨物流股份有限公司招聘(75人)筆試參考題庫附帶答案詳解
- 2025四川長虹電源股份有限公司招聘電氣系統(tǒng)設(shè)計主管等崗位47人筆試參考題庫附帶答案詳解
- 2025國網(wǎng)綜合能源服務(wù)集團(tuán)有限公司招聘高校畢業(yè)生約4人(第二批)筆試參考題庫附帶答案詳解
- 2025四川九洲投資控股集團(tuán)有限公司招聘法務(wù)崗5人筆試參考題庫附帶答案詳解
- 裝修轉(zhuǎn)包合同協(xié)議
- 2025中國重型機械研究院股份公司招聘(12人)筆試參考題庫附帶答案詳解
- DL∕T 2528-2022 電力儲能基本術(shù)語
- SL+303-2017水利水電工程施工組織設(shè)計規(guī)范
- 國企外聘合同范本
- 大學(xué)生職業(yè)素養(yǎng)(職業(yè)素養(yǎng)指導(dǎo)課程)全套教學(xué)課件
- 醫(yī)院培訓(xùn)課件:《血管超聲在通路中的應(yīng)用》
- 2024年職業(yè)技能測試題庫500道附答案【黃金題型】
- 吊籃安裝計算書
- 復(fù)習(xí)-Python初中信息技術(shù)
- 35KV電纜入地綜合項目工程綜合項目施工組織設(shè)計
- 園林工程課件
- 中國MEMS流量傳感器行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告2024-2029版
評論
0/150
提交評論