私は、セミコロンで区切られた、引用符で囲まれた ID と対応する値を含む文字列がたくさんある Perl プロジェクトに取り組んでいます。
例: main_id "1234567"; second_id "My_ID"; 名前「アンドレアス」;
すべての ID 名の後ろとすべてのセミコロンの後ろに空白があります。
私が扱っている2つの問題があります:
問題 1: 特定の ID の値 (引用符なし) を取得する最速の方法は? 私の最初の試みはうまくいきませんでした:
$id_list = 'main_id "1234567"; second_id "My_ID"; name "Andreas";';
$wanted_id = 'second_id';
($value = $id_list) =~ s/.*$wanted_id\w"([^"])";.*/$1/;
問題 2: この文字列 ID を特定の ID のハッシュに変換する最速の方法は次のようになります。
文字列: main_id "1234567"; second_id "My_ID"; 名前「アンドレアス」;
「second_id」のハッシュ:
hash{My_ID} = {main_id => 1234567, second_id => My_ID, name => Andreas}
私が試したこと:
$id_list = 'main_id "1234567"; second_id "My_ID"; name "Andreas";';
$wanted_id = 'second_id';
%final_id_hash;
%hash;
my @ids = split ";", $id_list;
foreach my $id (@ids) {
my ($a,$b)= split " ", $id;
$b =~ s/"//g;
$hash{$a} = $b;
}
$final_hash{$hash{$wanted_id}}= \%hash;
これはうまくいきましたが、より速い/より良い解決策はありますか?