2 つの配列があり@arr
、@arr1
それぞれに 10 個の要素が格納されています。ヘッダー付きのテーブルを印刷する必要があります。これらの配列値を 10 行と 2 列のテーブルにロードする必要があります。
@arr values into 1st column & `@arr1` into second column.
テーブルは、ここに表示されているようなものにする必要があります。perl スクリプトでそれを行うにはどうすればよいですか?
2 つの配列があり@arr
、@arr1
それぞれに 10 個の要素が格納されています。ヘッダー付きのテーブルを印刷する必要があります。これらの配列値を 10 行と 2 列のテーブルにロードする必要があります。
@arr values into 1st column & `@arr1` into second column.
テーブルは、ここに表示されているようなものにする必要があります。perl スクリプトでそれを行うにはどうすればよいですか?
配列を とマージできます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 ボーダーの大ファンではありません。