- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章perl的格式化(Format)报表输出实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
perl有最好的文本数据处理能力.这是大家都知道的.在perl本身有一个别的软件没有的小功能,就是Perl格式.它相当于简单的命令行报表和图表输出.这个需要先声明格式.创建格式的文件句柄.然后由@,^,<,>,|这样的字符构成所谓的”报表”来输出图表.这样可以指定出行的外观.后面接数据项,最后用write来显示格式化的内容. 。
样例: 输出纪录格式输出象下边一样定义: format NAME = FORMLIST . 。
第一部分,声明.如上.如果省略 NAME,上面的代码将定义格式输出 STDOUT。 第二部分,格式行FORMLIST 由一些有序的行组成,每一行都是下面三种类型中的一种: 1. 注释,以第一列为 # 来表示. 2. 一个格式行,用来定义一个输出行的格式,就是指上面讲的@,^,<,>,|这样的字符 3. 参数行,数据行,用来向前面的格式行中插入值,都是perl的变量 第三部分, 结束 “.”来表示. 。
格式行(图形行)语法: 格式行中每个被替换的部分分别以 @ 或者 ^ 开头。这些行不作任何形式的变量代换。 @ 字段(不要同数组符号 @ 相混淆)是普通的字段.
<, >,| 字段的长度通过在格式符号 @,^ 后跟随特定长度的 <, >,| 来定义,同时<,>,| 还分别表示,左对齐,右对齐,居中对齐。如果变量超出定义的长度,那么它将被截断.
^ 字段,用来进行多行文本块填充.
这样它会输出如下: 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函数来显示格式化的文本内容. 。
多页报表 $% 当前输出的页面编号 $= 页中的行数 $- 还有多少剩下的行数 。
在使用输出时,最好建一个表的顶部输出.这样看起来会好看很多. 。
实例代码:
输出如下 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 。
。
最后此篇关于perl的格式化(Format)报表输出实现代码的文章就讲到这里了,如果你想了解更多关于perl的格式化(Format)报表输出实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如果我的 Perl 程序使用 Perl 模块,它将如何确定在哪里可以找到包含模块代码的文件? 例如,如果程序包含: use MyModule1; # Example 1 us
我在一个文件中有一些不同格式的数字:8.3、0.001、9e-18。我正在寻找一种简单的方法来读取它们并存储它们而不会损失任何精度。这在 AWK 中很容易,但在 Perl 中是如何完成的呢?我只愿意使
我在一个文件中有一些不同格式的数字:8.3、0.001、9e-18。我正在寻找一种简单的方法来读取它们并存储它们而不会损失任何精度。这在 AWK 中很容易,但在 Perl 中是如何完成的呢?我只愿意使
我正在自学 Perl,并且在我的 Windows 8 64 位系统上安装了 Strawberry。 Strawberry 命令行似乎工作正常,我在 C 驱动器上的 Strawberry 文件夹中创建了
我在 Perl 模块 IO::Socket::SSL 中发现了一个错误,我可能会修复它,但是,我担心测试修复。我从 Debian 下载了源码包(因为我打算为它制作一个 Debian 包或补丁)并查看了
我有一个 perl 文件,它使用了两个 perl 模块 A.pm 和 B.pm。 但是在 B.pm 中我需要调用 A.pm 的子程序。即使我在 A.pm 中使用并尝试使用它,我仍然遇到未定义的错误。
有没有办法在 Perl 运行时加载整个模块?我原以为我用 autouse 找到了一个很好的解决方案,但以下代码无法编译: package tryAutouse2; use autouse 'tryAu
过去,我编写过许多 perl 模块,以及不止一些独立的 perl 程序,但我之前从未发布过多文件 perl 程序。 我有一个几乎处于 beta 阶段的 perl 程序,它将被开源发布。它需要一些数据文
我有 1 个 perl 脚本,我们在其中编写了几个子例程。例子: # Try_1.pl main(); sub main{ --- --- check(); } check { -- --} 现在,
似乎 CPAN 上的一些(很多?)模块部分是使用 XS 在 C 中实现的,如果需要,可以回退到纯 perl 实现。虽然这很聪明,但它显然会损害性能,我想知道它是否会发生,以便我可以解决问题。 有没有一
我对 perl 很陌生。我希望我可以从 perl 安装一些软件包,我这样做是这样的: perl -MCPAN -e 'install VM::EC2' 我猜它由于依赖而失败,它显示: Result:
给定一个 Perl 包 Foo.pm,例如 package Foo; use strict; sub bar { # some code here } sub baz { # more
我有一个用 Perl 编写的测试生成器。它生成连接到模拟器的测试。这些测试本身是用 Perl 编写的,并通过其 API 连接到模拟器。我希望生成的代码是人类可读的,这意味着我希望它能够正确缩进和格式化
我正在学习 Perl,非常新的用户。我可以知道这些 Perl 代码之间有什么区别吗? #!/usr/bin/perl & #!/usr/bin/perl -w 最佳答案 那不是 perl 代码,它是
我不认为这是一个重复的问题。这专门针对 Perl 模块附带的脚本。 通常,在安装多个 Perl 版本时,您可以将 perl 可执行文件标记为版本号 (perl5.32),这样它们就可以在 /whate
我有一个在文件中使用 Blowfish 加密的程序和第二个 perl 程序,它提示输入用于将其解密为字符串的密码,我希望不必将解密的源代码写入硬盘驱动器,尽管将它放在内存中并不是真正的问题,因为运行程
有没有人为 Perl 中的惰性求值列表找到了一个好的解决方案?我尝试了很多方法来改变类似的东西 for my $item ( map { ... } @list ) { } 进入懒惰的评估——例如,通
我安装了多个版本的 Perl。 我已经指定了要使用的版本。但是为了验证,我想从 .pl 脚本本身输出 Perl 的版本。 这可能吗? 在 Perl 脚本中解析“perl --version”的输出似乎
人们还经常问“我怎样才能编译 Perl?”而他们真正想要的是创建一个可以在机器上运行的可执行文件,即使他们没有安装 Perl。 我知道有几种解决方案: perl2exe靛蓝之星 它是商业的。我从未尝试
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
我是一名优秀的程序员,十分优秀!