我正在开发一个 Perl 项目,其中有很多字符串,其中包含 id 和引号中的相应值,用分号分隔。
示例:main_id "1234567"; second_id "My_ID"; 名称“安德烈亚斯”;
每个 ID 名称后面和每个分号后面都有一个空格。
我正在处理两个问题:
问题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;
这行得通,但是有更快/更好的解决方案吗?