论坛登陆 用户: 密码:
联系我们
设为首页
加入收藏
业界新闻 网络编程 程序开发 网页图象 聊天通讯 软件应用 网络安全 硬件学堂 教育频道 站长club
  ·推荐新闻
 
·美前任官员认为amd告倒英特
·搜索引擎关键字排行简介
·网站优化教程(一)
·msn近期遭受木马病毒骚扰 用
·用qq管理你的系统^_^ 
·测评中心金山毒霸联合发布7
·qq群聊实名 普通用户不受影
·雅虎思科联手推数字邮件签名
·这18条背下来没人敢和你忽悠
·自己动手,拯救丢失的硬盘数
  ·资料搜索
 
  ·相关文章
·perl实例分析教程之十五
·perl实例分析教程之十六
·perl程序设计中常用的函数之一
·perl程序设计中常用的函数之二
·perl程序设计中常用的函数之三
·perl程序设计中常用的函数之四
·perl教学 第一篇 概述
·perl教学 第二篇 简单变量
·perl教学 第三篇 操作符之一
·perl教学 第三篇 操作符之二
  ·热门新闻
首页>>网络编程>>cgi专区>>文章正文

perl教学 第十篇 格式化输出之三


 日期:2005-7-18 8:46:10     来源:易特网络技术   编辑:黑鹰  点击:
2、格式和局域变量
在上例中,你可能已经注意到子程序write_letter调用write输出字母及其出现次数,即使格式定义在子程序外部仍能正常工作。在第17行中将字母及其出现次数传递给该子程序,在子程序中,打印格式使用局域变量$letter和$value,这样保证了在foreach循环中每次输出当前的字母和值。
然而要注意的是,使用my定义的局域变量要求格式定义在子程序内部,否则就不会输出,因此,用write输出的局域变量一定要用local定义。(local和my详见《子程序》一章)
注:perl4中没有my函数,故不会有此问题。
3、选择值域格式
我们已经知道了打印格式和write函数怎么工作,现在来看看值域的格式,见下表:

格式 值域含义
@<<< 左对齐输出
@>>> 右对齐输出
@||| 中对齐输出
@##.## 固定精度数字
@* 多行文本

每个值域的第一个字符是行填充符,当使用@字符时,不做文本格式化。对文本的格式化稍后来讲。
在上表中,除了多行值域@*,域宽都等于其指定的包含字符@在内的字符个数,例如:
@###.##
表示七个字符宽,小数点前四个,小数点后两个。
4、输出值域字符
在打印格式里,特定字符如@、<和>被看作值域定义,那么如何将它们输出呢?方法如下:

format special =
this line contains the special character @.
"@"
.
四、输出到其它文件
缺省地,函数write将结果输出到标准输出文件stdout,我们也可以使它将结果输出到任意其它的文件中。最简单的方法就是把文件变量作为参数传递给write,如:
write (myfile);
这样,write就用缺省的名为myfile的打印格式输出到文件myfile中,但是这样就不能用$~变量来改变所使用的打印格式。系统变量$~只对缺省文件变量起作用,我们可以改变缺省文件变量,改变$~,再调用write,例如:
select (myfile);
$~ = "myformat";
write;
当select改变缺省文件变量时,它返回当前缺省文件变量的内部表示,这样我们就可以创建子程序,按自己的想法输出,又不影响程序的其它部分,如下:

sub write_to_stdout {
local ($savefile, $saveformat);
$savefile = select(stdout);
$saveformat = $~;
$~ = "myformat";
write;
$~ = $saveformat;
select($savefile);
}
五、分页
在输出到打印机时,可以在每页顶部输出相应的信息,这样的特殊文本叫页眉。定义页眉实际上就是定义名为filename_top的打印格式,例如给标准输出文件定义页眉如下:
format stdout_top =
consolidated widgets inc. 1994 annual report
.
在页眉的定义中也可以包含值域,页眉中经常使用的一个特殊值是当前页码,存贮在系统变量$%中,如:
format stdout_top =
page @<<.
$%
.
我们也可以通过改变系统变量$^改变定义页眉的打印格式名,与$~一样,$^只对当前缺省文件起作用,因此可以与select函数结合使用。
缺省情况下,每页长度为60行,可以通过改变$=来改变页长,如:
$= = 66; #页长设为66行
此赋值语句必须出现在第一个write语句前。
注:一般使用分页机制时不用print函数,因为当用write输出时,perl解释器跟踪每页的当前行号。如果必须使用print而又不打乱页计数,可以调整系统变量$-。$-的含义是当前行到页末之间的行数,当$-达到零时,就开始新的一页,调整方法如:
print ("here is a line of output\n");
$- -= 1;


上一篇:perl教学 第十篇 格式化输出之四
下一篇:perl教学 第十篇 格式化输出之二
[发送给好友] [打印本页] [关闭窗口] [返回顶部转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 黑鹰 投稿作者: 易特网络
信息来源: 易特网络技术 录入时间: 2005-7-18 8:46:10
浏览次数: 投稿信箱: shtghy@163.com
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ©2004-2005 iyit.net all rights reserved. 网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息