如何在Perl中打印并排输出

时间:2014-08-08 14:21:16

标签: perl

我需要以与diff -y工作方式类似的方式将输出打印到Perl中的文件。

示例输出是这样的。

     Master                                  Slave

node     -- canvas 1.0.3              | node     -- canvas 1.0.2
node     -- jquery 1.8.3.0.0.0        | node     -- jquery 2.1.1
yahooooo -- test 1.0.0.0.0.0.0.0.0.0  | yahooooo -- test 1.1.0.0.0.0.0.0.0.0

“主”和“从”列中的内容不是固定长度。

试过这个,

foreach my $row (sort keys %version_err) {
    format STDOUT =
    @<<<<<<<<<<<<<<<<<<<<<<<<<<<   @||||             @<<<<<<<<<<<<<<<<<<
    $version_err{$row}->[0]    $version_err{$row}->[1]    $version_err{$row}->[2]
.
write;
}

2 个答案:

答案 0 :(得分:3)

在这些情况下,您应该使用format

答案 1 :(得分:0)

格式选项可以是Text::Table

为了获得正确的数据,您可能需要类似

的内容
use Text::Table;
my @table;
foreach my $row (sort keys %version_err) {
    push @table, [ $version_err{$row}->[0], $version_err{$row}->[1], $version_err{$row}->[2]];
    #or just: push @table, $version_err{$row};
}
my $tb = Text::Table->new("Col 1", "Col 2", "Col 3");
$tb->load(@table);
print $tb;