【发布时间】:2014-02-18 23:07:43
【问题描述】:
我有一个键值对字符串,其中的对以逗号分隔,但值有嵌套的逗号。
例如
"key1|val1,key2|val2_a,val2_b,val2_c,key3|val3"
我想把它分解成一个散列并用以下内容破解它:
my $str = "key1|val1,key2|val2_a,val2_b,val2_c,key3|val3";
my @vars = split(/([^,\s]+)\|/ ,$str);
my @arr = splice @vars, 1;
my %hash = @arr;
print Dumper(\%hash);
这给了我:
$VAR1 = {
'key2' => 'val2_a,val2_b,val2_c,',
'key1' => 'val1,',
'key3' => 'val3'
};
我正在寻找一种更优雅的方式来执行此操作。我认为它可以用一个正则表达式来完成,但我很难弄清楚。谁能指出我正确的方向?
【问题讨论】: