如何使用perl获取带边框的表?

时间:2012-06-28 06:06:21

标签: perl

我有2个阵列@arr& @arr1每个都有10个元素存储在其中。 我需要用标题打印一个表。 我需要将这些数组值加载到10行和10的表中。 2列。

@arr values into 1st column & `@arr1` into second column.

表格应该像这里显示的那样。我怎么能在perl脚本中做到这一点?

enter image description here

1 个答案:

答案 0 :(得分:4)

您可以将数组与map合并。这也很容易扩展到更多列。

#!/usr/bin/env perl
use strict;
use warnings;
use Text::Table;

my @arr = 'a' .. 'j';
my @arr1 = 1 .. 10;

my $tb = Text::Table->new("Col 1", "Col 2");
$tb->load( map [$arr[$_], $arr1[$_]], 0 .. $#arr );

print $tb;

输出:

Col 1 Col 2
a      1   
b      2   
c      3   
d      4   
e      5   
f      6   
g      7   
h      8   
i      9   
j     10

如果你想添加边框,你可以这样做:

my $tb = Text::Table->new(
    {is_sep => 1, title => '| ', body => '| '},
    "Col 1",
    {is_sep => 1, title => ' | ', body => ' | '},
    "Col 2",
    {is_sep => 1, title => ' |', body => ' |'},
);

$tb->load(map [$arr[$_], $arr1[$_]], 0 .. $#arr);

print $tb->rule('-', '+');

for (0 .. @arr) {
    print $tb->table($_);
    print $tb->rule('-', '+');
}

my $tb = ...以上的所有内容都保持不变。就个人而言,我不是ascii边界的忠实粉丝。