-4

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

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

表应该像这里显示的那样。如何在 perl 脚本中做到这一点?

在此处输入图像描述

4

1 回答 1

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 边框的忠实粉丝。

于 2012-06-28T06:28:42.810 回答