打印与格式化输出.ppt_第1页
打印与格式化输出.ppt_第2页
打印与格式化输出.ppt_第3页
打印与格式化输出.ppt_第4页
打印与格式化输出.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章 打印与格式化输出,9.1 使用print函数,使用print函数可以将原始的末格式化的文本存入到文件,如果打印到屏幕以及帮助调试脚本,它的标准语法如下: Print FILEHANDLE list; 它的作用是将list中的数据打印到FILEHANDLE为文件句柄的文件中,还可以省略部份参数,写为如下的形式:,Print FILEHANDLE; 表示将perl5内置变量$内容打印到FILEHANDLE Print list表示将数据打印到默认的文件句柄. Print:将内置变量$打印到默认的文件句柄,9.1.1设置默认文件句柄 Print函数一般使用默认文件句柄STDOUT,在perl5启动时,会自动打开文件句柄STDOUT. 它的初始设置是计算机的显示器,可以在程序中自定义STDOUT的设置,但一般采用select函数来改革者变默认的文件句柄,而不用改变STDOUT的设置. 语法如下: select (FILEHANDLE);,默认文件句柄是全局变量,所以在使用结束后,要注意使它恢复到原先的值,这可以通过使用动态作用域来实现,也可以让子程序在使用全局变量时不会给其它程序带来影响。,9.1.2 使用heredoc操作符 heredoc操作符,即表示here文档,用于打印输出当前的文件句柄,一般情况下,默认的文件句柄是STDOUT,它的语法如下: Print heredoc maker;,在后可以标明一个结束字符串,后面用此字符串来结束引号引起的文本,从当前行一直到结束字符串再次出现的中间所有行都同属于这一个字符串。 结束字符串可以是一个标识符或者某些引号括起来的文本。,如果结束字符串用引号括起,所使用的引号的类型决定对整个字符串的处理,和正则表达式一样,一个末加引号的标识符和用双引号括起来是一样的。 但在和标识符中间不能有空格,如果有的话,会被认为是空标志符。 而结束字符串必须单独一行出现,不加引号且周围没有空格。,如: Print “eof”; Print eof; 都是可行的,这里语句中的分号不能省略。,9.2格式化输出,用write函数和打印格式可以得到格式化输出,write函数的语法和print函数的语法类似,如下: Write FILEHANDLE; 或 Write; 表达式中如果没有句柄,则使用默认或选择的句柄,文件句柄有相关联的format语句,用于定义打印格式。,9.2.1 定义打印格式 定义打印格式的关键字为format,语法为: format formatname=lines_of_output; 以关键字format开始,后面是打印格式名formatname,它和一般变量的命名规则相同。,如果格式名和文件句柄同名,则用它作为该文件句柄的默认打印格式。如果格式名为文件句柄加上_TOP后缀,则用它作为该文件句柄的默认表头格式(标题)。格式名后面是一个等号,格式声明的第二部分是定义要打印到文件句柄的内容,第三部份是一个结束行,结束行仅为一个点号,不能再用任何其它符号。且点行必须在该行第一个字符。,9.2.2 显示打印格式 利用一个简单的write函数和适当的format语句,就可以向文件或屏幕发送大量的格式化数据,打印固定格式一般可以分成两步: (1)将系统变量$_设成为所要使用的格式; (2)调用函数write.,例9-1 #!/usr/bin/perl $=“MYFORMAT“; write; format MYFORMAT= = 静夜思 床前明月光, 疑是地上霜。 举头望明月, 低头思故乡。 = .,要特别注意,在最后一行的开头不能少了点号,下面是程序的运行结果。,9.2.3格式输出变量 使用打印格式的主要目的是格式化存储在简单变量或数变量中的值从而生成可读性好的输出,这可以用“值域”来实现,每个值域指定一个值,调用write函数就可以用值域指定的格式来显示 。,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中将格式命名为文件句柄名,就可以把这种格式和文件句柄相关联。 表头格式在每个新数据页面打印,表头格式通过在文件句柄后加上关键字_TOP来定义并与文件句柄关联(表头格式关联有考虑大小写,一定要用_TOP).,在例9.2中, 要注意一下,定义时的形式,有时两个是同名的情况下,要注意区分,如: $=“WRITEHEADER_TOP“; write; $=“WRITEHEADER“; write; 这两句都是输出表头,利用不同的格式名去赋值,可以实现区别的效果。,3.定义值域格式 值域的定义格式也可以有多种,一种是直接定义好格式,如: format WRITEHEADER_TOP= Name Age = .,另一种是定义变量在其中的对齐方式,然后再确定从哪列开始打印后面变量和为每个变量分配多少个输出字符,用到的符号是和号,对于大多数格式化工作,每个对齐字段以号开头,而号告诉重复与该号相关联的变量,变量应出现在位置行的每个号及其它字符所定义的位置上。,如: format WRITELETTER= $name,$age . format WRITEHEADER= * .,这里,每个值域的第一行字符是行填充符,当使用字符时,不做文本格式化。 除了多行值域符号*外,域宽都等于其指定的包含符号在内的字符个数。 如: #.# 表示共有7位的宽度,小数点前4个,小数点后2个。,9.2.4 特殊变量格式化 我们可以把格式变量与文件句柄相连,为了应用的方便,perl也允许使用特殊变量来进行文件句柄的关联。 在perl中,有一个模块叫English.pm,在程序的头部加上“use English”这个代码,就可以在程序中使用别名了。,9.2.5 输出文件 默认的,write函数将结果输出到标准输出文件STDOUT,也可以使它将结果输出到任意其它的文件中。最简单的办法是把文件句柄作为参数传递给write函数,如下所示: write (MYFILE); write函数就用默认名为MYFILE的打印格式输出到文件MYFILE中,但这样就不能用$变量来改变所使用的打印格式,系统变量$只对默认文件句柄起作用。,可以先改变默认文件句柄,然后改变$,再调用write函数,如: select (MYFILE); $=“MYFORMST”; 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.1004 Annual Report,对word熟悉的同学应该知道,页眉中常见的一个值就是当前的页码,在perl里,它是存在系统变量$%中的。 如: format STDOUT_TOP= page $% .,也可以通过改变系统$改变定义页眉的打印格式名,与$一样,$只对当前默认文件起作用,可以和select函数结合使用。 默认情况下,每页长度为60行,但可以通过对$=的改变来改变页长 如: $=66; 意思是页长($=)为66页。,9.2.6 处理长字符串 在使用format语句时,每行数据都设置为特定长度,这样可以使所有的数据行和列对齐,如果要处理长信息,就要在格式行中使用 或* 值域*虽然可以输出多行文本,但它只是将字符原样输出,不加以格式化。,在perl中对长字符串(包含换行)进行格式化的值域定义很简单,只需把打头的换成即可。这种文本格式化中,perl解释器在一行中将放置尽可能多的单词。 每当输出一行文本,被输出的子串就从变量中删除,再次在值域中使用该变量就把剩下的字符串继续按格式输出。当内容全部输出完后,这个变量就成了空串,就会输出一个空行,有时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论