Perl 是一个非常强大的文本数据处理语言。
Perl 中可以使用 format 来定义一个模板,然后使用 write 按指定模板输出数据。
Perl 格式化定义语法格式如下:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
参数解析:
- FormatName:格式化名称。
- fieldline:一个格式行,用来定义一个输出行的格式,类似 @,^,,| 这样的字符。
- value_one,value_two……:数据行,用来向前面的格式行中插入值,都是perl的变量。
- .:结束符号。
以下是一个简单是格式化实例:
实例
#!/usr/bin/perl $text= "google codercto taobao"; formatSTDOUT= first: ^ # 左边对齐,字符长度为6 $text second: ^ # 左边对齐,字符长度为6 $text third: ^ # 左边对齐,字符长度为5,taobao 最后一个 o 被截断 $text . write执行以上实例输出结果为:
first: google second: codercto third: taoba
格式行(图形行)语法
- 格式行以 @ 或者 ^ 开头,这些行不作任何形式的变量代换。
- @ 字段(不要同数组符号 @ 相混淆)是普通的字段。
- @,^ 后的 , ,| 长度决定了字段的长度,如果变量超出定义的长度,那么它将被截断。
- , ,| 还分别表示,左对齐,右对齐,居中对齐。
- ^ 字段用于多行文本块填充。
值域格式
值域的格式,如下表所示:
| 格式 | 值域含义 |
|---|---|
| @ | 左对齐输出 |
| @ | 右对齐输出 |
| @||| | 中对齐输出 |
| @##.## | 固定精度数字 |
| @* | 多行文本 |
每个值域的第一个字符是行填充符,当使用@字符时,不做文本格式化。
在上表中,除了多行值域@*,域宽都等于其指定的包含字符@在内的字符个数,例如:
@###.##
表示七个字符宽,小数点前四个,小数点后两个。
实例如下: