欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Perl】format格式化輸出

程序员文章站 2024-02-24 12:58:34
...

語法


format FORMATNAME =
fieldline
value1, value2, value3
fieldline
value1, value2, value3
.
 
=pod
FORMATNAME :格式化模板名称
fieldline  :一个格式行,用来定义一个输出行的格式,以@或^开头
value1..    : 数据行,向前面一个格式行插入变量value
.          :结束符号


格式行语法

  • 以@或^开头
  • @、^后的 <, >, |   长度决定了字段的长度,如果变量超出定义的长度将被截断
  • < ,  >,  |  还分别表示左对齐,右对齐,居中对齐
  • ^用于多行文本填充

值域格式

@###.### 表示固定精度数字,一共8个zifu字符宽,小数点前4位,后面3位


格式变量

$~($FORMAT_NAME)                     :当前格式名字

$^($FORMAT_TOP_NAME)            :当前表头格式

$=($FORMAT_LINES_PER_PAGE):每页中的行数

$|   ($FORMAT_AUTOFLUSH)             :是否自动刷新输出缓冲区存储

$%( $FORMAT_PAGE_NUMBER)   :设置页码


默认format

    默认format是STDOUT, 用select改变输出文件句柄,記得和write搭配使用。


example

#!/usr/bin/perl -w

   format STUDENT =
   ==========================
   @<<<<<<<<<<<<< @<<<<<<<<<<
   $name, $score
   ==========================
   .
   
   format STUDENT_TOP =
   ==========================
   Name           Score
   ==========================
   .
 
   @stuName = ('hunk', 'jack', 'lucy');
   @stuScore = (80, 70 , 60);
  
   if(open(STUDENT, ">tmp")){
      #select(HANDLE);
      $~ = STUDENT;    #指定格式名字
      $^ = STUDENT_TOP;#指定表頭格式
      $i = 0;
      foreach (@stuName){
          $name = $_;
          $score = $stuScore[$i++];
          write STUDENT;
      }
      close STUDENT;
  }

  result:

==========================
Name           Score
==========================
==========================
hunk           80
==========================
==========================
jack           70
==========================
==========================
lucy           60
==========================