如前所述Perl代表著實際提取和報告語言,我們將討論如何使用Perl來編寫報告。
Perl使用寫作模板,所謂的“格式”輸出報告。要使用格式的Perl特性,你必須:
以下是語法來定義一個Perl的格式
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
FormatName表示的格式的名稱。Fieldline是應該被格式化的具體數據。線條表示值,將被輸入到的磁力線,與一個句點結束的格式。
Fieldline可以包含任何文本或fieldholders。Fieldholders保持空間的數據將置於在稍後的日期。fieldholder有一個格式:
@<<<<
fieldholder是左對齊,用5空格空間。知道有多少在該字段的空格,您必須自行計算@符號和<的大小。其它字段中持有包括:
@>>>> right-justified @|||| centered @####.## numeric field holder @* multiline field holder
一個例子的格式是:
format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== .
在這個例子中$的名字將被寫為左對齊在22個字符的空格和年齡後,在兩個空格空間將被寫入。
為了調用此格式的聲明,我們將使用寫關鍵字:
write EMPLOYEE; #send to the output
問題是,格式的名稱通常是一個打開的文件句柄的名字,並寫語句將輸出發送到這個文件句柄。我們要發送的數據到stdout,我們必須聯合起來,並在輸出文件句柄的EMPLOYEE。首先,我們必須確保,STDOUT是我們的選擇的文件句柄,使用select()函數。
select(STDOUT);
然後,我們將通過設置新的格式名稱STDOUT與STDOUT關聯EMPLOYEE,使用特殊的變量$〜。
$~ = "EMPLOYEE";
我們現在做的一個write()時,數據將發送給STDOUT。請記住:如果你冇有STDOUT設置為默認的文件句柄,你可以恢複到原來的文件句柄分配的返回值,選擇一個標量值,使用選擇這個標量變量的特殊變量後,被指定的格式命名,名稱相關聯STDOUT。
上麵的例子會產生一個報告按以下格式:
Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
一切都看起來很好。但是,如果你想在報告中添加一個頭。這頭將被打印在每個頁麵的頂部。它也非常簡單的做到這一點。除了自定義一個模板,你必須定義一個報頭,它具有相同的名稱,但附加_TOP關鍵字如下:
format EMPLOYEE_TOP =
------------------------
Name Age
------------------------
.
# by www.gitbook.net
現在,您的報告將看起來像:
------------------------ Name Age ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
如果您的報告采用超過一頁怎麼辦?你有一個解決方案。使用$%報頭如下
format EMPLOYEE_TOP =
------------------------
Name Age Page @<
------------------------ $%
.
現在,您的輸出將類似於:
------------------------ Name Age Page 1 ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10
您可以設置每頁的行數默認情況下使用特殊的變量$=($ FORMAT_LINES_PER_PAGE)$=60
剩下最後要做一件事是頁腳,與報頭非常相似,你可以定義一個頁腳,它會被寫入後的每一頁。在這裡,你會使用_BOTTOM關鍵字,而不是_TOP。
format EMPLOYEE_BOTTOM =
End of Page @<
$%
. #by www.gitbook.net
這會給你下麵的結果:
------------------------ Name Age Page 1 ------------------------ Kirsten 12 Mohammad 35 Suhi 15 Namrat 10 End of Page 1
對於一個完整的一套相關的格式化的變量,請參考 Perl特殊變量部分。