DBIのfetchall_hashref()を使用してデータを取得するスクリプトがあります。
通常、次のようなハッシュ参照を返します。
{ 1 => { id => 1 } }
ただし、特定の列の最大値である、ハッシュの最初の項目の値にのみ関心があります。Perlハッシュが順序付けられていないことは知っていますが、幸いなことに、この特定のクエリは常に正確に1または0レコードを返します(これはMAX()クエリであるため)。
しかし、それを達成するために現在使用されているコードは本当に醜いです:
$results->{(keys %{$results})[0]}->{'id'};
これをアクティブにするためのよりエレガントな方法はありますか?(CPANモジュールに頼ることなく)
明確化
社内で使用しているデータアクセス層からハッシュを取得しています。すべてがfetchall_hashref()を介して返されます。私はfetchall_hashref()自体を呼び出さず、データアクセス関数が内部で実装される方法であると言われています。私はその返されたデータの消費者であり、それはたまたまハッシュの形式になっています。単一の戻り値クエリの結果にアクセスするための、より簡潔な方法が存在する場合は、それを探しています。