-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 に答える