#!/usr/bin/perl use strict; use warnings; use diagnostics; use Text::CSV; use Data::Dumper; open(my $io, "player_characters.csv") || die("can't open player_characters.csv: $!"); my $csv = Text::CSV_XS->new({ sep_char => '|', allow_whitespace => 1, always_quote => 1, blank_is_undef => 1, }); my @names = $csv->getline($io); $csv->column_names (@names); while (defined (my $hr = $csv->getline_hr($io))) { print Dumper($hr); }