There are classes of errors which branch coverage cannot detect:
$h = 0; if ($x) { $h = { a => 1 }; } if ($y) { print $h->{a}; }
continued...