perl - 如何在 Perl 中以列形式打印数据?

标签 perl output-formatting

我有一个程序可以按行打印数组的内容。我希望它在一列中打印每个数组并排打印。

这是代码:

#!/usr/local/bin/perl

use strict;
use warnings;

my @M_array;
my @F_array;

open (my $input, "<", 'ssbn1898.txt');

while ( <$input> ) {

    chomp;

    my ( $name, $id ) = split ( /,/ ); 

    if ( $id eq "M" ) {
        push ( @M_array, $name );
    }
    else {
        push ( @F_array, $name ); 
    }
}
close ( $input );

print "M: @M_array \n"; 
print "F: @F_array \n";

这是可能的还是我正在尝试做一些无法完成的事情?

所需格式:

M      F 
Namem1 Namef1 
Namem2 Namef2 

最佳答案

您可以使用 join 在数据之间添加您想要的任何分隔符函数,下面的示例格式化数组中由制表符分隔的数据:

...
use List::MoreUtils qw/pairwise/;

my $separator = "\t";
print join($separator, qw(M F)), "\n";
print join(
   "\n", 
   pairwise { ( $a // '') . $separator . ( $b // '') } @M_array, @F_array
), "\n";
...

关于perl - 如何在 Perl 中以列形式打印数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31385155/

相关文章:

perl - 成熟、强大的Perl库支持文本/字符串操作?

perl - 如何在 Perl 中计算 wav 文件的 MD5 哈希?

perl - CPAN 在 OS X 中哪里安装 Perl 模块?

r - 可以打印超过 100 行的 data.table 吗?

r - 垂直打印的列名

kubernetes - 如何将 kubectl 描述的输出格式化为 JSON

perl - 排序与线性搜索寻找最小值/最大值

perl - 在 Perl 中拆分 4 个空格

r - 避免打印到控制台的字符串被截断(在 RStudio 中)

r - 数据帧上的 format(..., justify = "left") 是否也会左对齐列名称?