Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to print all values of an array in Perl

Tags:

csv

perl

I am trying to do print all of the values of an array from a CSV file. I am sort of manually doing this in the example below. Can someone show me the code for doing this for all of the fields of the array no matter how many fields there are? I'm basically 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;
like image 669
XL. Avatar asked Jul 07 '10 21:07

XL.


2 Answers

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

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

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 what do you want it for? Then season the code accordingly.

like image 139
Zaid Avatar answered Oct 05 '22 20:10

Zaid


foreach(@columns)
{
    print "$_\r\n";
}

Instead of all the columns[number].

like image 40
Alistra Avatar answered Oct 05 '22 21:10

Alistra