使用Perl获得格式化输出的最佳方法

shi*_*juo 7 formatting perl

我想将字符串输出到八列,但我想保持间距相同.我不想用HTML做,但我不知道如何正常做.例:

Something    Something     Something     Something     Something
Else         Else          Else          Else          Else
Another      Another       Another       Another       Another
Run Code Online (Sandbox Code Playgroud)

行数将每天更改,但列号将始终保持不变.做这个的最好方式是什么?

mob*_*mob 16

printf

    printf "%-11s %-11s %-11s %-11s %-11s %-11s %-11s %-11s\n",
            $column1, $column2, ..., $column8;
Run Code Online (Sandbox Code Playgroud)

将模板中的"11"更改为您需要的任何值.


vol*_*ron 11

你可以用Perl's format.这可能是您不理解的"复杂"方法,很可能是因为它为您提供了许多选项(左|中|右对齐/填充,前导0等).

Perldoc示例:

Example:
   format STDOUT =
   @<<<<<<   @||||||   @>>>>>>
   "left",   "middle", "right"
   .
Output:
   left      middle    right
Run Code Online (Sandbox Code Playgroud)

是另一个教程.


工作示例:( 键盘)

#!/usr/bin/perl -w    

use strict; 

   sub main{    
      my @arr = (['something1','something2','something3','something4','something5','something6','something7','something8']
                ,['else1'     ,'else2'     ,'else3'     ,'else4'     ,'else5'     ,'else6'     ,'else7'     ,'else8'     ]
                ,['another1'  ,'another2'  ,'another3'  ,'another4'  ,'another5'  ,'another6'  ,'another7'  ,'another8'  ]
                );

      for my $row (@arr) {
         format STDOUT =
@<<<<<<<<<<<<  @<<<<<<<<<<<<  @<<<<<<<<<<<<  @<<<<<<<<<<<<  @<<<<<<<<<<<<  @<<<<<<<<<<<<  @<<<<<<<<<<<<  @<<<<<<<<<<<<  
         @$row
.
         write;
      }

   }    

   main();   
Run Code Online (Sandbox Code Playgroud)