You've quite obviously already taken the time to come up with the code, and though this looks quite good for you current case, this will break if your CSV data gets more complicated like having UTF8 encoded data or embedded newlines, this approach will break. I'd advice you to use the more safe way (note that I did not change anything else, see GrandFathers answer for changes). I have commented all my changes:
my $csv = Text::CSV->new ({ binary => 1, # Allow utf8 and embedded newlines auto_diag => 1, # make detecting CSV errors easy }); # open into a lexical file handle open my $fh, "<", $file or die "$file: $!"; my @content; my %masterlist; $csv->getline ($fh); # skip first line # @hdr = @{$csv->getline ($fh)}; would save it for header info # $csv->getline () respects $/, but reads past embedded newlines while (my $row = $csv->getline ($fh)) { $masterlist{$row->[0]} = $row->[1]; # auto_diag takes care of the failures } close $fh;
See how much shorter that also gets?
In reply to Re: Please help with CSV
by Tux
in thread Please help with CSV
by bones07
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |