Я пытаюсь сделать, печатают все значения массива из файла 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;
foreach(@columns)
{
print "$_\r\n";
}
Вместо всех столбцов [число].
Для целей отладки Data::Dump
- мое оружие выбора. Он, по сути, печатает структуры данных.
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
Лучший ответ зависит от ситуации. Зачем вам это нужно? С чем вы работаете? И для чего вам это нужно? Затем приправьте код соответствующим образом.
Если вы просто хотите распечатать элементы, разделенные пробелами:
print @columns;
Если вы хотите быть немного более изящным, вы можете использовать join
:
print join("\n", @columns);
Если вам нужно сделать что-то еще, повторите это:
foreach (@columns) {
# do stuff with $_
}
Если вы делаете это для диагностических целей (а не для презентации), вы можете рассмотреть Data :: Dumper . В любом случае это хороший инструмент, о котором нужно знать, если вы хотите быстро распечатать более или менее произвольные данные.