Perl 教程 之 Perl 格式化输出 8

简介: Perl 格式化输出

Perl 教程 之 Perl 格式化输出 8

Perl 格式化输出

Perl 是一个非常强大的文本数据处理语言。

Perl 中可以使用 format 来定义一个模板,然后使用 write 按指定模板输出数据。

格式变量

$~ ($FORMAT_NAME) :格式名字 $^ ($FORMAT_TOP_NAME) :当前的表头格式名字存储在
$% ($FORMAT_PAGE_NUMBER) :当前输出的页号
$= ($FORMAT_LINES_PER_PAGE) :每页中的行数
$| ($FORMAT_AUTOFLUSH) :是否自动刷新输出缓冲区存储
$^L ($FORMAT_FORMFEED) :在每一页(除了第一页)表头之前需要输出的字符串存储在

输出到其它文件
默认情况下函数write将结果输出到标准输出文件STDOUT,我们也可以使它将结果输出到任意其它的文件中。最简单的方法就是把文件变量作为参数传递给write,如:

write(MYFILE);

以上代码write就用默认名为MYFILE的打印格式输出到文件MYFILE中。

但是这样就不能用$~变量来改变所使用的打印格式。系统变量$~只对默认文件变量起作用,我们可以改变默认文件变量,改变$~,再调用write。

我们可以使用select改变默认文件变量时,它返回当前默认文件变量的内部表示,这样我们就可以创建子程序,按自己的想法输出,又不影响程序的其它部分。

实例

!/usr/bin/perl

if (open(MYFILE, ">>tmp")) {
select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中
$~ = "OTHER";
write; # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER

format OTHER =

使用定义的格式输入到文件中

.
close MYFILE;
}
执行成功后,我们可以查看 tmp 文件的内容,如下所示:

$ cat tmp

  输入到文件中

=================================

使用定义的格式输入到文件中

目录
相关文章
|
Windows
zlib、libzip、 libzippp 库编译(windows + cmake + vs2013)
"libzipp" 这库是基于 "libzip" 之上封装的,而 "libzip" 又是基于 "zlib"库封装的,所以要编译 "libzipp" 库就要先编译其他两个库。下载准备:"zlib-1.2.
4123 0
|
安全 Shell Linux
ssh密码忘记了怎么办
通过上述措施,不仅能够有效应对SSH密码遗忘的挑战,还能全方位加固SSH连接的安全,确保数据传输的无忧。
953 2
|
运维 关系型数据库 MySQL
MySQL8之mysql-community-debuginfo的作用
【7月更文挑战第10天】
247 6
|
开发工具 git
Jupyter Lab操作文档
**Jupyter Lab 概览:**集成编辑器、终端和自定义组件的环境。可定制主题、显示行号、切换语言。使用时,了解界面布局,通过`Ctrl+Enter`运行代码,`Shift+Enter`前进,`Alt+Enter`新建行。利用Markdown写作,通过Terminal执行命令,用快捷键提升效率,如`a/b`增删单元格,`m/y`切换模式。文件上传下载可使用OBS或终端工具。
Jupyter Lab操作文档
解决办法:undefined reference to symbol 'shm_open@@GLIBC_2.2.5'
解决办法:undefined reference to symbol 'shm_open@@GLIBC_2.2.5'
639 0
|
Linux Shell 调度
Linux 内核源代码情景分析(二)(中)
Linux 内核源代码情景分析(二)
242 1
|
安全 Shell Linux
内网渗透测试基础——Windows PowerShell篇
内网渗透测试基础——Windows PowerShell篇
543 0
|
监控 Oracle 关系型数据库
在Linux中,如何使用perf和DTrace进行性能分析。
在Linux中,如何使用perf和DTrace进行性能分析。
|
存储 SQL 缓存
PostgreSQL DirectIO开发实践
在数据库开源的背景下,基于PG的DirectIO的研发方案分享。
PostgreSQL DirectIO开发实践
|
关系型数据库 数据库 PostgreSQL
Postgresql为什么需要Freeze?
Freeze PG需要为每个事务分配事务ID,这是MVCC能工作的基础,类似于一个时间戳的概念。 时间戳的做基本动作就是比较大小,即需要得到哪条事务在先,哪条在后。   首先我们来看一下PG中事务ID的比较逻辑,这部分在之前的某一起DB月报中也介绍过。 /* * TransactionIdPrecedes --- is id1 logically < id2? */boo
2173 0