私の目標は、生スタックから良いキーリストにではありませんレコードを削除することです。Perlのハッシュをフィルタリングするために、より効率的な方法を探してい
これを最も効率的にどのように達成できますか?私が現在取り組んでいるコードはドラッグを感じています。私は提案のために開いています。
値がばかげて大きくなることがありますのでご注意ください。スタックキーコンテナを必要としないへの道がありますように私は感じ
foreach my $good_key (@good_keys)
{
foreach my $stack_key (@stack_keys)
{
my @stack = split(/~/, $stack_key);
if ($stack[1] eq $good_key)
{
}
}
}
:
# Main data container
my %raw_stack = (
'a1~a2~a3' => 'dat1~dat2',
'b1~b2~b3' => 'dat1~dat2',
'c1~c2~c3' => 'dat1~dat2',
'd1~d2~d3' => 'dat1~dat2',
'e1~e2~e3' => 'dat1~dat2',
);
# Container of stack keys only
my @stack_keys = (
'a1~a2~a3',
'b1~b2~b3',
'c1~c2~c3',
'd1~d2~d3',
'e1~e2~e3',
);
# Container of valid keys
my @good_keys = (
'a2',
'c2',
'e2',
);
は、ここで私が現在働いているコードです:
は、ここに私のデータです。私はちょっと...
(1) '%stack_keys'は'%raw_stack'キーを使うだけでよいので、必要ありません。 (2)どのアプローチが最も効率的かは、これらの構造のサイズに依存する。 '@ good_keys'が小さければ、'%raw_stack'の各キーと照合できる単一の正規表現に変換するのが理にかなっていますが、大きければルックアップとして表現する方が意味がありますあなたが今のようにハッシュを行い、 'スプリット'を実行します。 – ruakh