Perlでプログラムの練習をしているのですが、わからないことがあります。

ハッシュの配列で、
[
{
"id" => "1",
"com"=> "2"
},
{
"id" => "2",
"com"=> "2"
}
]
のような物があったとして、idが1のハッシュのcomの値を取得したいのですが、
foreach等でスキャンするしか方法はないのでしょうか?
ハッシュの配列がかなり大きく、idの呼び出しもかなりの回数行うことがあるので負荷などを考えると、効率のいい探し方はないかと調べております。