【Perl】format格式化輸出

語法


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
==========================


 

发布了89 篇原创文章 · 获赞 17 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/lbt_dvshare/article/details/90545727