>>99
my @data;

open(IN, $file) or die $!;

(my $key = <IN>) =~ s/^#\s*|\n//g;
my @keys = split(/,/, $key);

for (<IN>) {
  chomp;
  local %_;
  @_{@keys} = split(/,/);
  push( @data, { %_ } );
}

close(IN);

---
結果、以下のように代入される。

@data = (
  { 'ID' => '0', 'NAME' => 'yamada', 'TEL' => '333', 'ADDRESS' => 'A32' },
  { 'ID' => '1', 'NAME' => 'tanaka', 'TEL' => '555', 'ADDRESS' => 'B22' }
);

アクセスは、
print $data[0]{NAME}; # yamada
print $data[1]{TEL}; # 555