謎の投げやりコード

sub parseHoge {

    my ($data, $ref_header, $ref_detail) = @_;

    my %header = %$ref_header;
    my %detail = %$ref_detail;

    # TreeBuilderでparse
    my $tree = HTML::TreeBuilder->new;
    $tree->parse($data);

     my @tables  = $tree->find_by_tag_name("table");
    my @trs     = $tables[$header{tableindex}]->find_by_tag_name("tr");

    # 解析結果格納配列
    my @all    = ();

    foreach my $tr (@trs) {

        my %data        = ();
        my %target_tags = ();
        my $not_found   = 0;

        foreach my $key (keys % detail) {

            # この項目は$tag_nameというタグで囲まれている
            my $tag_name = $detail{$key}{tag};

            # タグ解析済データがなければ作る
            if (!$target_tags{$tag_name})
            {
                $target_tags{$tag_name} = [$tr->find_by_tag_name($tag_name)];
            }

            # index番目の$tag_nameに囲まれている値が欲しい値
            my $target_tag = $target_tags{$tag_name}[$detail{$key}{index}];

            # データが不完全なのでパス
            if (!$target_tag) {
                $not_found = 1;
                last;
            }

            $data{$key} = $target_tag->as_text;
        }

        # 不完全データは保持しない
        if ($not_found)
        {
            next;
        }

        push(@all, {%data});
    }

    return @all;
}