実はハッシュに入れたリストの取り出し方がわからないのです。これだとスコープ外なのでしょうか?
open(TXT, "x.dat");
$status = 0;
my %hash;
foreach (<TXT>) {
 chomp;
 if ($status == 0) {
  if (/^start (\S)/) {
   my @list;
   $hash{$1} = \@list;
   $status = 1;
  }
 } elsif ($status == 1) {
  if (/^end;/) {
   $status = 0;
  } else {
   push(@list, "$_");
  }
 }
}
my @k = sort keys(%hash);
foreach (@k) {
 my $lst = $hash{"$_"};   # リストをを取り出したい
 print @$lst;
}
-------------- x.dat
start C
CCC
end;
start A
AAA
end;