# Method 1 push @data, {%tmp}; # Method 2 push @data, \%tmp; #### sub read_dat { my $file = shift; my @data = (); while ( defined (my $line = ) ) { next unless $line =~ m/\w+/; chomp $line; my @line = split (",", $line); my %tmp = map { $columns[$_] => $line[$_] } 0..$#columns; push @data, \%tmp; } return @data; }