主頁 > 知識(shí)庫 > perl的格式化(Format)報(bào)表輸出實(shí)現(xiàn)代碼

perl的格式化(Format)報(bào)表輸出實(shí)現(xiàn)代碼

熱門標(biāo)簽:真人語音電銷機(jī)器人系統(tǒng) 邯鄲外呼調(diào)研線路 開封百應(yīng)電銷機(jī)器人聯(lián)系方式 電話機(jī)器人電話卡封號(hào)怎么辦 北京語音電銷機(jī)器人價(jià)格 買了外呼系統(tǒng)不想用了怎么辦 樂昌電話機(jī)器人 武漢呼叫中心外呼系統(tǒng)線路商 浦東上海400開頭的電話申請(qǐng)

perl有最好的文本數(shù)據(jù)處理能力.這是大家都知道的.在perl本身有一個(gè)別的軟件沒有的小功能,就是Perl格式.它相當(dāng)于簡單的命令行報(bào)表和圖表輸出.這個(gè)需要先聲明格式.創(chuàng)建格式的文件句柄.然后由@,^,,>,|這樣的字符構(gòu)成所謂的”報(bào)表”來輸出圖表.這樣可以指定出行的外觀.后面接數(shù)據(jù)項(xiàng),最后用write來顯示格式化的內(nèi)容.

樣例:
輸出紀(jì)錄格式輸出象下邊一樣定義:
format NAME =
FORMLIST
.

第一部分,聲明.如上.如果省略 NAME,上面的代碼將定義格式輸出 STDOUT。
第二部分,格式行FORMLIST 由一些有序的行組成,每一行都是下面三種類型中的一種:
1. 注釋,以第一列為 # 來表示.
2. 一個(gè)格式行,用來定義一個(gè)輸出行的格式,就是指上面講的@,^,,>,|這樣的字符
3. 參數(shù)行,數(shù)據(jù)行,用來向前面的格式行中插入值,都是perl的變量
第三部分, 結(jié)束 “.”來表示.

格式行(圖形行)語法:
格式行中每個(gè)被替換的部分分別以 @ 或者 ^ 開頭。這些行不作任何形式的變量代換。
@  字段(不要同數(shù)組符號(hào) @ 相混淆)是普通的字段。

, >,|     字段的長度通過在格式符號(hào) @,^ 后跟隨特定長度的 , >,| 來定義,同時(shí),>,| 還分別表示,左對(duì)齊,右對(duì)齊,居中對(duì)齊。如果變量超出定義的長度,那么它將被截?cái)唷?/P>

^ 字段,用來進(jìn)行多行文本塊填充。

復(fù)制代碼 代碼如下:

$text = "aaa bbb ccc ";
format STDOUT =
first: ^
    $text
second: ^
    $text
third: ^
    $text 
.
write

這樣它會(huì)輸出如下:
first: aaa
second: bbb
third: ccc

它默認(rèn)會(huì)對(duì)字符串$text進(jìn)行分解,象split.當(dāng)然,是以$:存的內(nèi)容做分割符.
#(在 @ 或 ^ 后邊)   右對(duì)齊的另外一種方式,在這些符號(hào)后面指定一個(gè)數(shù)字字段。你可以在這種區(qū)域中插入一個(gè) . 來制定小數(shù)點(diǎn)的位置。如果這些區(qū)域的值包含一個(gè)換行符,那么只輸出換行符前面的文本。如@.##就是輸出二位小數(shù).
@*        可以被用來打印多行不截?cái)嗟闹?也就是多行沒有格式化的輸出.

參數(shù)行(數(shù)據(jù)行)
參數(shù)行指定參數(shù)的順序必須跟相應(yīng)的格式行的字段順序一致。不同參數(shù)的表達(dá)式需要使用逗號(hào)分隔。
參數(shù)的數(shù)據(jù)可以是標(biāo)量數(shù)據(jù),也可以是函數(shù)的返回值.
參數(shù)行被處理之前所有的參數(shù)表達(dá)式都在列表環(huán)境中求值,因此單個(gè)列表表達(dá)式會(huì)產(chǎn)生多個(gè)列表元素。
通過使用圓括弧將表達(dá)式括起來,可以使表達(dá)式擴(kuò)展到多行 (因此,圓括弧必須是第一行的第一個(gè)標(biāo)志)。這樣就可以將值同相應(yīng)的格式域?qū)?yīng)起來方便閱讀。
表達(dá)式中,空白字符 \n,\t,和 \f 總是被解釋成單個(gè)空格

格式變量

$~ 中 ($FORMAT_NAME)          格式名字
$^ ($FORMAT_TOP_NAME)         當(dāng)前的表頭格式名字存儲(chǔ)在
$% ($FORMAT_PAGE_NUMBER)      當(dāng)前輸出的頁號(hào)
$= ($FORMAT_LINES_PER_PAGE)   每頁中的行數(shù)
$| ($FORMAT_AUTOFLUSH)      是否自動(dòng)刷新輸出緩沖區(qū)存儲(chǔ)
$^L ($FORMAT_FORMFEED)       在每一頁(除了第一頁)表頭之前需要輸出的字符串存儲(chǔ)在

注:這些變量以文件句柄為基礎(chǔ)設(shè)定,因此你需要 select 與特定格式關(guān)聯(lián)的文件句柄來影響這些格式變量

調(diào)用輸出
write
最后直接用write函數(shù)來顯示格式化的文本內(nèi)容.

多頁報(bào)表
$%  當(dāng)前輸出的頁面編號(hào)
$=  頁中的行數(shù)
$-  還有多少剩下的行數(shù)

在使用輸出時(shí),最好建一個(gè)表的頂部輸出.這樣看起來會(huì)好看很多.

實(shí)例代碼:

復(fù)制代碼 代碼如下:

#!/usr/bin/perl
use strict;
use warnings;

my ($name,$login,$office,$uid,$gid, $home);
open FD,"/etc/passwd" or die "$?";
while(FD>){
  ($name,$login,$office,$uid,$gid, $home) = split (":",$_);
    $^ = 'STDOUT_TOP';
    $~ = 'STDOUT';
    $= = 39;
    write;
}

format STDOUT_TOP =
@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"Page $%"
                           Passwd File
  Name                Login    Office   Uid   Gid Home
------------------------------------------------------------------
.

format STDOUT =
@ @||||||| @@>>>> @>>>> @
$name,               $login,  $office,$uid,$gid, $home

.

輸出如下
                                                  Page 3
                           Passwd File
  Name                Login    Office   Uid   Gid Home
--------------------------------------------------------------------
sshd                   x     115    65534       /var/run/sshd
vde2-net               x     116      128       /var/run/vde2
mysql                  x     117      129 MySQL /var/lib/mysql
oracle                 x     1001    1001       /usr/lib/oracle/xe
tomcat6                x     118      130       /usr/share/tomcat6

您可能感興趣的文章:
  • asp.net DataFormatString格式化GridView
  • php Smarty date_format [格式化時(shí)間日期]
  • jquery EasyUI的formatter格式化函數(shù)代碼
  • 如何在UpdatePanel中調(diào)用JS客戶端腳本
  • s:set 和 s:date 使用, 在jsp判斷日期
  • js Date概念詳細(xì)介紹
  • JS中Date日期函數(shù)中的參數(shù)使用介紹
  • JS之Date對(duì)象和獲取系統(tǒng)當(dāng)前時(shí)間詳解
  • js字符串日期yyyy-MM-dd轉(zhuǎn)化為date示例代碼
  • js用Date對(duì)象的setDate()函數(shù)對(duì)日期進(jìn)行加減操作
  • JS日期格式化之javascript Date format

標(biāo)簽:宜春 石嘴山 松原 六安 鄂州 淄博 河北 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《perl的格式化(Format)報(bào)表輸出實(shí)現(xiàn)代碼》,本文關(guān)鍵詞  perl,的,格式化,Format,報(bào)表,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《perl的格式化(Format)報(bào)表輸出實(shí)現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于perl的格式化(Format)報(bào)表輸出實(shí)現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章