首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将“hash string”转换为hash?

如何将“hash string”转换为hash?
EN

Stack Overflow用户
提问于 2013-02-27 17:22:04
回答 3查看 1.4K关注 0票数 3

我将散列字符串存储在文件{"a"=>1,"b"=>2}中,我打开该文件并将此散列字符串存储到$hash_string中,如何将此$hash_string转换为$hash_string_ref = {"a"=>1,"b"=>2}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-27 17:27:12

答案很简单:

代码语言:javascript
复制
$ echo '{"a"=>1,"b"=>2}' > val.pl
$ perl -le 'my $foo = do "val.pl"; print $foo->{a}'
1

更好的答案是:考虑使用更好的数据序列化格式,比如StorableYAML,甚至是JSON。

票数 9
EN

Stack Overflow用户

发布于 2013-02-27 17:28:10

使用Perl Safe

该模块将运行任何perl代码(在沙箱中)并返回结果。包括解码例如转储到文件的结构。

代码示例:

代码语言:javascript
复制
use Safe;     
my $compartment = new Safe;
my $unsafe_code = '{"a"=>1,"b"=>2}';
my $result = $compartment->reval($unsafe_code);
print join(', ', %$result); 
票数 5
EN

Stack Overflow用户

发布于 2013-02-27 18:44:56

您的数据格式似乎是“任意Perl表达式”,这是一种非常糟糕的数据格式。你为什么不使用JSON或者功能更全的YAML呢?

代码语言:javascript
复制
use JSON::XS qw( encode_json decode_json );

sub save_struct {
   my ($qfn, $data) = @_;
   open(my $fh, '>:raw', $qfn)
      or die("Can't create JSON file \"$qfn\": $!\n");
   print($fh encode_json($data))
      or die("Can't write JSON to file \"$qfn\": $!\n");
   close($fh)
      or die("Can't write JSON to file \"$qfn\": $!\n");
}

sub load_struct {
   my ($qfn) = @_;
   open(my $fh, '>:raw', $qfn)
      or die("Can't create JSON file \"$qfn\": $!\n");
   my $json; { local $/; $json = <$fh>; }
   return decode_json($json);
}

my $data = {"a"=>1,"b"=>2};
save_struct('file.json', $data);

...

my $data = load_struct('file.json');
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15108330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档