如何在Perl中打印数组的所有值

如何在Perl中打印数组的所有值,perl,csv,Perl,Csv,我正在尝试从CSV文件打印数组的所有值。在下面的示例中,我是在手动执行此操作。有人能告诉我对数组的所有字段执行此操作的代码吗,无论有多少字段?我基本上只是想把每个字段打印在一行上 #!/usr/bin/perl use strict; use warnings; use Text::CSV_XS; my $file = 'test.csv'; my $csv = Text::CSV_XS->new ({ quote_char => '"', es

我正在尝试从CSV文件打印数组的所有值。在下面的示例中,我是在手动执行此操作。有人能告诉我对数组的所有字段执行此操作的代码吗,无论有多少字段?我基本上只是想把每个字段打印在一行上

#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV_XS;

my $file = 'test.csv';

my $csv = Text::CSV_XS->new ({
    quote_char          => '"',
    escape_char         => '@',
    binary              => 1,
    keep_meta_info      => 0,
    allow_loose_quotes  => 1,
    allow_whitespace    => 1,
});


open (CSV, "<", $file) or die $!;

while (<CSV>) {
    if ($csv->parse($_)) {
        my @columns = $csv->fields();
        print "$columns[0]\r\n";
        print "$columns[1]\r\n";
        print "$columns[2]\r\n";
        print "$columns[3]\r\n";
        print "$columns[4]\r\n";
        print "$columns[5]\r\n";
        print "$columns[6]\r\n";
        print "$columns[7]\r\n";
    }
    else {
        my $err = $csv->error_input;
        print "Failed to parse line: $err";
    }
}
close CSV;
#/usr/bin/perl
严格使用;
使用警告;
使用Text::csvxs;
my$file='test.csv';
my$csv=Text::csv_XS->新建({
quote_char=>“”,
escape_char=>'@',
二进制=>1,
保持_meta_info=>0,
允许\u松散\u引号=>1,
允许_空格=>1,
});
打开(CSV,“

而不是所有列[编号]。

如果只想打印由空格分隔的元素:

print @columns;
如果您想变得更花哨一点,可以使用
join

print join("\n", @columns);
如果您需要做更多的事情,请迭代:

foreach (@columns) {
    # do stuff with $_
}

如果您是为了诊断目的而这样做的(与演示文稿相反),您可能会考虑<强>数据::翻转器< /强>。在任何情况下,它都是一个很好的工具,以了解是否希望有更多或更少的任意数据的打印输出。

< P>调试的目的,是我的首选武器。它基本上打印了数据结构。

use strict;
use warnings;
use Data::Dump 'dump';

# Do some stuff....

dump @array;     # Unlike Data::Dumper, there's no need to backslash ('\@array')
dump %hash;      # Same goes for hashes
dump $arrayref;  
dump $hashref;   # References handled just as well

当然,还有许多其他方法可以打印阵列:

say foreach @columns;           # If you have Perl 5.10+
print $_,"\n" foreach @columns; # If you don't

print "@columns";               # Prints all elements, space-separated by default

“最佳”答案取决于具体情况。你为什么需要它?你在用什么?你想要它做什么?然后相应地调整代码。

我刚刚尝试了连接函数,它也很有效。这实际上解决了我正在处理的脚本的另一个方面。非常感谢!你的
连接
示例没有优先权在最后一项后换行。@mobrule:如果有必要,则可以添加:
print join(“\n”,“@columns”),“\n”
{ $"="\n"; print $fh "@files"; }
{ $"="\n"; print $fh "@files"; }