How to print all array values ​​in Perl

I am trying to print all array values ​​from a CSV file. I kind of manually do this in the example below. Can someone show me the code for this for all the fields of the array no matter how many fields there are? I'm just trying to print each field on a new line.

#!/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; 
+7
perl csv
source share
5 answers
 foreach(@columns) { print "$_\r\n"; } 

Instead of all columns [number].

+11
source share

For debugging purposes, Data::Dump is my weapon of choice. It basically prints data structures beautifully.

 use strict; use warnings; use Data::Dump 'dump'; # Do some stuff.... dump @array; # Unlike Data::Dumper, there no need to backslash ('\@array') dump %hash; # Same goes for hashes dump $arrayref; dump $hashref; # References handled just as well 

There are many other ways to print arrays, of course:

 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 

The "best" answer depends on the situation. Why do you need it? What are you working with? And why do you want this? Then enter the code accordingly.

+8
source share

If you just want to print elements separated by spaces:

 print @columns; 

If you want to be a little more fancy, you can use join :

 print join("\n", @columns); 

If you need to do something else, go over it:

 foreach (@columns) { # do stuff with $_ } 
+6
source share

If you are doing this for diagnostic purposes (as opposed to a presentation), you can consider Data :: Dumper . In any case, this is a good tool to know if you want a quick printout of more or less arbitrary data.

+1
source share
 { $"="\n"; print $fh "@files"; } 
+1
source share

All Articles