我想取一个给定的输入,比如说,并在其上运行特定的解析,并用这些解析的输出填充哈希。例如,我想要这样的输入:
"barcodedSamples": "{\"I-735\":{\"barcodes\":[\"IonXpress_001\"]},\"13055\":{\"barcodes\":[\"IonXpress_002\"]}}",
要解析(使用grep和一些我没有强烈掌握的更具体的小提琴的组合)到表中列出条形码和样本名称,如下所示:
barcode sample
IonXpress_001 I-735
IonXpress_002 13055
其中“条形码”和“样本”被视为键。另一个例子是我想要开始一行:
"library": "hg19",
并将值“hg19”(所以,第二组引号内的字符串,以编程方式说)映射到任意键,如“lib”:
Library
hg19
答案 0 :(得分:3)
该字符串非常类似于JSON,但需要进行一些清理才能成为有效的JSON。
#!/usr/bin/perl
use strict;
use warnings FATAL => qw/all/;
use JSON;
use Data::Dumper;
my $json_string = '"barcodedSamples": "{\"I-735\":{\"barcodes\":[\"IonXpress_001\"]},\"13055\":{\"barcodes\":[\"IonXpress_002\"]}}"';
$json_string =~ s/\\//g; # remove escape backslashes.
$json_string =~ s/"\{/{/; # remove an invalid opening quote.
chop $json_string; # remove an invalid closing quote.
$json_string = '{' . $json_string . '}'; # wrap in curly braces.
my $json_object = JSON->new( );
my $perl_ref = $json_object->decode( $json_string );
print Dumper( $perl_ref );
答案 1 :(得分:1)
您正在解析的字符串看起来像JSON一样可疑。为什么不使用JSON模块(它带有较新的Perls,但可以从CPAN安装较旧的)而不是编写自己的解析器?