J'essaie d'imprimer toutes les valeurs d'un tableau à partir d'un fichier CSV. Je suis en train de le faire manuellement dans l'exemple ci-dessous. Quelqu'un peut-il me montrer le code pour le faire pour tous les champs de la matrice, quel que soit le nombre de champs? J'essaie essentiellement d'imprimer chaque champ sur une nouvelle ligne.
#!/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;
5 Réponses :
foreach(@columns)
{
print "$_\r\n";
}
Instead of all the columns[number].
Si vous voulez simplement imprimer les éléments séparés par des espaces: Si vous souhaitez être un peu plus fantaisie, vous pouvez utiliser Si vous avez besoin de faire quelque chose de plus, itérer sur elle: p> joindre code>: p>
Je viens d'essayer la fonction de jointure et cela fonctionne également bien. Cela résout un autre aspect du script que je travaille. Merci beaucoup!
Votre exemple rejoindre code> n'imprime pas une nouvelle ligne après le dernier élément.
@Mobrule: Si cela est nécessaire, alors il est trivial pour ajouter: imprimer rejoindre ("\ n", @Columns), "\ n"; code>
Si vous faites cela à des fins de diagnostic (par opposition à la présentation), vous pourriez envisager Data :: Dumper Strong>. En tout cas, c'est un bon outil de savoir si vous souhaitez une impression rapide de données arbitraires plus ou moins. P>
Pour débogage, Data :: Dump Code> est mon arme de choix. Il imprime fondamentalement des structures de données.
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
{ $"="\n"; print $fh "@files"; }