- 论坛徽章:
- 0
|
老大。
@a = eval $str; 也不行的。 返回空白页
最后有前辈帮我写了一段
#!/usr/bin/perl
use strict;
use warnings;
use Data:umper;
#$str = "{file => 'file1', desc => 'test'}, {file => 'file12', desc => 'test2'}"
my $string = q({file => 'file1', desc => 'test''}, {file => 'file22', desc22 => 'desc22'});
my @array_of_hashes;
my @hashes = $string =~ /(\{.*?\})/g;
for my $hashstr (@hashes) {
my @keys = $hashstr =~ /(\w+)\s*=>/g;
my @values = $hashstr =~ /=>\s*\'(\w+)\'/g;
my %hash;
@hash{@keys} = @values;
push @array_of_hashes, \%hash;
}
print "ragma: no-cache\n";
print "Content-type:text/html\n\n";
print Dumper(\@array_of_hashes);
#Gives:
#$VAR1 = [
# {
# 'desc' => 'test',
# 'file' => 'file1'
# },
# {
# 'desc' => 'test2',
# 'file' => 'file12'
# }
#];
遗憾的是不支持中文。同时也无法为空的值或者值中有空格。比如以下的形式将导致undef .
谁能再帮我看看。改一下?
请注意看 desc2 => '
my $string = q({file => 'file1', desc => 'test', desc2 => 'desc 2222', desc3 => 'test3'}, {file => 'file22', desc22 => 'desc22'}); ###这样结果就会有undef 出现。导致key和value错乱。
my $string = q({file => 'file1', desc => 'test', desc2 => '', desc3 => 'test3'}, {file => 'file22', desc22 => 'desc22'}); ###这样结果就会有undef 出现。导致key和value错乱。
谁能帮我一下 ? |
|