[ { is a reference to an (anonymous) array of references to (anonymous) hashes. However, in the second snippet, you use it as a reference to a hash.
Anyway, the missing magic is Text::CSV and a hash slice.
use strict; use warnings; use Text::CSV qw( ); my $csv = Text::CSV->new(); open(my $fh_in, '<', 'input.txt') or die("Can't open input.txt: $!\n"); while (<$fh_in>) { $csv->parse($_) or die("Incorrectly formatted line ($.)\n"); my %Employee_Rec; @Employee_Rec{qw( Emp_No Emp_Lname Emp_Fname Emp_SSN Emp_DOB Emp_aka )} = $csv->fields(); print "$Employee_Rec{Emp_No} \n"; print "$Employee_Rec{Emp_Lname} \n"; print "$Employee_Rec{Emp_Fname} \n"; print "$Employee_Rec{Emp_SSN} \n"; print "$Employee_Rec{Emp_DOB} \n"; print "$Employee_Rec{Emp_aka} \n"; }
Update: If you really did want to use field indexes,
use strict; use warnings; use Text::CSV qw( ); my $csv = Text::CSV->new(); my %Employee_Field_Idx_Lkup = ( Emp_No => 0, Emp_Lname => 1, Emp_Fname => 2, Emp_SSN => 3, Emp_DOB => 4, Emp_aka => 5, ); open(my $fh_in, '<', 'input.txt') or die("Can't open input.txt: $!\n"); while (<$fh_in>) { $csv->parse($_) or die("Incorrectly formatted line ($.)\n"); my @fields = = $csv->fields(); my %Employee_Rec; @Employee_Rec{keys %Employee_Field_Idx_Lkup} = @fields[values %Employee_Field_Idx_Lkup]; print "$Employee_Rec{Emp_No} \n"; print "$Employee_Rec{Emp_Lname} \n"; print "$Employee_Rec{Emp_Fname} \n"; print "$Employee_Rec{Emp_SSN} \n"; print "$Employee_Rec{Emp_DOB} \n"; print "$Employee_Rec{Emp_aka} \n"; }
In reply to Re: Loading an anonymous hash
by ikegami
in thread Loading an anonymous hash
by pglenski
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |