如何清空$table每次迭代使用Text::SimpleTable绘制


#!/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的参数是什么,所以我不得不查看源代码。

最新更新