perl如果将string转换成array of hashes 字符串转数组
如何将$string="{file=>'file1',desc=>'test},{file=>'file12',desc=>'test2'}"转换成my@array_of...
如何将
$string = "{file => 'file1', desc => 'test}, {file => 'file12', desc => 'test2'}"
转换成
my @array_of_hashes = (
{file => 'file1', desc => 'test},
{file => 'file12', desc => 'test2'},
);
如果是 {file => 'file1', desc => 'test,descn => 'testn }, 就是hash里n对。 同时array也含有n个数组。 有没有一永安逸得方法 。 你的方法不错。不过只是针对特定的 这个string的。 麻烦你再帮帮我一下。谢谢 展开
$string = "{file => 'file1', desc => 'test}, {file => 'file12', desc => 'test2'}"
转换成
my @array_of_hashes = (
{file => 'file1', desc => 'test},
{file => 'file12', desc => 'test2'},
);
如果是 {file => 'file1', desc => 'test,descn => 'testn }, 就是hash里n对。 同时array也含有n个数组。 有没有一永安逸得方法 。 你的方法不错。不过只是针对特定的 这个string的。 麻烦你再帮帮我一下。谢谢 展开
2个回答
展开全部
用split把它切块,然后用push 赋值给数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/bin/perl -w
use strict;
my $string = "{file => 'file1', desc => 'test'},{file => 'file12', desc => 'test2'}";
my @myarr;
while( $string =~ /{(\w+)\s* =>\s*'(\w+)',\s*(\w+)\s* =>\s*'(\w+)'}/g )
{
push @myarr,{$1 => $2, $3 =>$4};
}
print $myarr[1]->{desc},"\n";
单纯的split一下不行的。
数组的元素是匿名哈希,不是字符串,我感觉还是需要提出数据来的。
use strict;
my $string = "{file => 'file1', desc => 'test'},{file => 'file12', desc => 'test2'}";
my @myarr;
while( $string =~ /{(\w+)\s* =>\s*'(\w+)',\s*(\w+)\s* =>\s*'(\w+)'}/g )
{
push @myarr,{$1 => $2, $3 =>$4};
}
print $myarr[1]->{desc},"\n";
单纯的split一下不行的。
数组的元素是匿名哈希,不是字符串,我感觉还是需要提出数据来的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询