Read CSV file
- CSV
{% embed include file="src/examples/references/data.csv)
We would like to read in that file and be able to access the fname of row 5
as $data[3]{fname}
# the fname on line 5 is in index 3 because:
# line 1 is the header
# line 2 is element 0 in the array
# ...
# line 5 is element 3 in the array
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $filename = shift
or die "Usage: $0 FILENAME ( examples/references/data.csv )\n";
my @data;
open my $fh, '<', $filename or die;
my $header = <$fh>;
chomp $header;
my @header = split /,/, $header;
while (my $line = <$fh>) {
chomp $line;
my %row;
my @values = split /,/, $line;
foreach my $i (0..@header-1) {
my $field = $header[$i];
$row{$field} = $values[$i];
}
# using hash slices:
# @row{@header} = split /,/, $line;
push @data, \%row;
}
print Dumper \@data;
$VAR1 = [
{
'lname' => 'Bar',
'fname' => 'Boo',
'phone' => '123'
},
{
'lname' => 'Baz',
'fname' => 'Foo',
'phone' => '456'
},
{
'lname' => 'Zorg',
'fname' => 'Moo',
'phone' => '789'
}
];