my $h;
$h=100;
{local $a;}

これがダメなのは前にmyで宣言してるってことが関係あんだろ?

our $h;
$h=20;
{local $h}

localはグローバル変数の値を別の場所にやんだろ

my %h;
my %a;
なんでmyなのに$a[0]と$h{x}でlocalが使えるってことはこの二つがグローバルってこと

俺は知ってるけどおめえなんかに答えおしえねえよかす