たとえばこういうのはどうでしょう?

@table= (); $col= 0;
open(CSV, $csvfile);
while(<CSV>){
  @tmp= ();
  while( !/^$/ && (/^\s*\"([^"]*)\"\s*(,|$)/ || /^\s*([^,]*)\s*(,|$)/) ){
    push(@tmp, $1); $_= $';
  }
  $col= $#tmp if $col < $#tmp;
  @table= (@table, [@tmp]);
}
close(CSV);
$table= "<TABLE>\n";
for $row ( $[ .. $#table ){
  $table.= "<TR>\n";
  for ( $[ .. $col ){
    $table[$row][$_]= '<BR>' unless $table[$row][$_];
    $table.= "<TD>$table[$row][$_]</TD>\n";
  }
  $table.= "</TR>\n";
}
$table.= "</TABLE>\n";