日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 格式化报表输出,perl的格式化(Format)报表输出实现代码

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 格式化报表输出,perl的格式化(Format)报表输出实现代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

樣例:

輸出紀錄格式輸出象下邊一樣定義:

format NAME =

FORMLIST

.

第一部分,聲明.如上.如果省略 NAME,上面的代碼將定義格式輸出 STDOUT。

第二部分,格式行FORMLIST 由一些有序的行組成,每一行都是下面三種類型中的一種:

1. 注釋,以第一列為 # 來表示.

2. 一個格式行,用來定義一個輸出行的格式,就是指上面講的@,^,,|這樣的字符

3. 參數行,數據行,用來向前面的格式行中插入值,都是perl的變量

第三部分, 結束 “.”來表示.

格式行(圖形行)語法:格式行中每個被替換的部分分別以 @ 或者 ^ 開頭。這些行不作任何形式的變量代換。

@? 字段(不要同數組符號 @ 相混淆)是普通的字段。

,|???? 字段的長度通過在格式符號 @,^ 后跟隨特定長度的 ,| 來定義,同時,| 還分別表示,左對齊,右對齊,居中對齊。如果變量超出定義的長度,那么它將被截斷。

^ 字段,用來進行多行文本塊填充。

$text = "aaa bbb ccc ";

format STDOUT =

first: ^<<<<

$text

second: ^<<<<

$text

third: ^<<<<

$text

.

write

這樣它會輸出如下:

first: aaa

second: bbb

third: ccc

它默認會對字符串$text進行分解,象split.當然,是以$:存的內容做分割符.

#(在 @ 或 ^ 后邊)?? 右對齊的另外一種方式,在這些符號后面指定一個數字字段。你可以在這種區域中插入一個 . 來制定小數點的位置。如果這些區域的值包含一個換行符,那么只輸出換行符前面的文本。如@.##就是輸出二位小數.

@*??????? 可以被用來打印多行不截斷的值,也就是多行沒有格式化的輸出.

參數行(數據行)參數行指定參數的順序必須跟相應的格式行的字段順序一致。不同參數的表達式需要使用逗號分隔。

參數的數據可以是標量數據,也可以是函數的返回值.

參數行被處理之前所有的參數表達式都在列表環境中求值,因此單個列表表達式會產生多個列表元素。

通過使用圓括弧將表達式括起來,可以使表達式擴展到多行 (因此,圓括弧必須是第一行的第一個標志)。這樣就可以將值同相應的格式域對應起來方便閱讀。

表達式中,空白字符 \n,\t,和 \f 總是被解釋成單個空格

格式變量

$~ 中 ($FORMAT_NAME)????????? 格式名字

$^ ($FORMAT_TOP_NAME)???????? 當前的表頭格式名字存儲在

$% ($FORMAT_PAGE_NUMBER)????? 當前輸出的頁號

$= ($FORMAT_LINES_PER_PAGE)?? 每頁中的行數

$| ($FORMAT_AUTOFLUSH)????? 是否自動刷新輸出緩沖區存儲

$^L ($FORMAT_FORMFEED)?????? 在每一頁(除了第一頁)表頭之前需要輸出的字符串存儲在

注:這些變量以文件句柄為基礎設定,因此你需要 select 與特定格式關聯的文件句柄來影響這些格式變量

調用輸出write

最后直接用write函數來顯示格式化的文本內容.

多頁報表

$%? 當前輸出的頁面編號

$=? 頁中的行數

$-? 還有多少剩下的行數

在使用輸出時,最好建一個表的頂部輸出.這樣看起來會好看很多.

實例代碼:

#!/usr/bin/perl

use strict;

use warnings;

my ($name,$login,$office,$uid,$gid, $home);

open FD,"

while(){

($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

總結

以上是生活随笔為你收集整理的oracle 格式化报表输出,perl的格式化(Format)报表输出实现代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。