#!/tool/pandora64/bin/perl5.18.1
use strict;
use warnings;
use Text::SimpleTable; my $a=1;my $b=2; my $c=3; my $d=4; my @p_arr = (1,2);
my $table = Text::SimpleTable->new([1, "A"], [2, "B"], [3, "C"], [4, "D"]);
foreach my $p(@p_arr){
$table->row($a,$b,$c,$d);
$a=$a+1; $b=$b+1; $c=$c+1; $d=$d+1;
print "nAfter $p iterationn";
print $table->draw;
}
我需要打印表,但在第一次迭代之后,它正在追加。如何在每次迭代后清空表?
输出:
After 1 iteration
.----+----+-----+------.
| A | B | C | D |
+----+----+-----+------+
| 1 | 2 | 3 | 4 |
'----+----+-----+------'
After 2 iteration
.----+----+-----+------.
| A | B | C | D |
+----+----+-----+------+
| 1 | 2 | 3 | 4 |
| 2 | 3 | 4 | 1 |
'----+----+-----+------'
预计第一次迭代后:
.----------------
| A | B | C | D |
+----------------
| 1 | 2 | 3 | 4 |
+----------------
期望第二次迭代:
.----------------
| A | B | C | D |
+----------------
| 2 | 3 | 4 | 5 |
只需将调用移动到foreach
循环中的new
。这样每次通过循环都会创建一个新表:
use strict;
use warnings;
use Text::SimpleTable; my $a=1;my $b=2; my $c=3; my $d=4; my @p_arr = (1,2);
foreach my $p(@p_arr){
my $table = Text::SimpleTable->new([1, "A"], [2, "B"], [3, "C"], [4, "D"]);
$table->row($a,$b,$c,$d);
$a=$a+1; $b=$b+1; $c=$c+1; $d=$d+1;
print "nAfter $p iterationn";
print $table->draw;
}
打印:
After 1 iteration
.----+----+-----+------.
| A | B | C | D |
+----+----+-----+------+
| 1 | 2 | 3 | 4 |
'----+----+-----+------'
After 2 iteration
.----+----+-----+------.
| A | B | C | D |
+----+----+-----+------+
| 2 | 3 | 4 | 5 |
'----+----+-----+------'
如果您希望所有列的宽度相同,您可以在调用new
:
my $table = Text::SimpleTable->new([1, "A"], [1, "B"], [1, "C"], [1, "D"]);
POD没有指定new
的参数是什么,所以我不得不查看源代码。