【Perl】format格式化輸出

    xiaoxiao2023-10-14  164

    語法

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

     

    最新回复(0)