在Perl中是否有内置的"hash to string"?

cdl*_*ary 15 string perl hash

我将从Python背景学习Perl,其中以下哈希到字符串转换内置于该语言中:

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> str(d)
"{'a': 1, 'c': 3, 'b': 2}"
Run Code Online (Sandbox Code Playgroud)

是否有内置和/或模块具有子程序,其输出沿着以下行:

"('a' => 1, 'b' => 2, 'c' => 3)"
Run Code Online (Sandbox Code Playgroud)

奇怪的是,网络搜索perl "hash to string"并没有发现我正在寻找的任何内容.谢谢!

Leo*_*ans 43

use Data::Dumper;
local $Data::Dumper::Terse = 1;
my $str = Dumper({a => 1, b => 2, c => 3});
Run Code Online (Sandbox Code Playgroud)


dwa*_*ing 27

另见JSON:

#!/usr/bin/perl
use warnings; use strict;
use JSON;

my $data = {a => 1, b=> 2, c => 3};

print to_json($data);
Run Code Online (Sandbox Code Playgroud)

这会产生:

{"c":3,"a":1,"b":2}
Run Code Online (Sandbox Code Playgroud)

  • 虽然原始问题并不意味着这是一个问题,但JSON :: to_json是_fast_,所以如果你需要序列化很多东西,这可能是比Data :: Dumper更好的答案.(http://doppnet.com/2011/03/how-to-gain-24861-performance-boost-in-perl/) (5认同)
  • +1虽然似乎Data :: Dumper被投票回答,但我认为JSON方法应该得到一个非常简单的哈希到字符串的识别. (4认同)

Gre*_*ill 11

Data::Dumper一种方法可以进行这种转换.


j_r*_*ker 6

使用Data :: Dump代替Data :: Dumper.它基本上是一样的,除非没有那令人讨厌的$VAR1 = ...瑕疵:

use Data::Dump "pp";
print pp({a => 1, b => 2, c => 3});
Run Code Online (Sandbox Code Playgroud)

生产:

{ a => 1, b => 2, c => 3 }
Run Code Online (Sandbox Code Playgroud)

如果你在Windows上,Data :: Dump 已从 5.8版开始预装了ActivePerl.