#!/usr/bin/perl
use warnings;
my %hash=("no1"=>1,
"no2"=>2,
);
print %hash; #Prints no11no22
print "%hash"; #Prints %hash
为什么Perl不支持在双引号内插入哈希?它支持标量($),数组(@)的插值,为什么不支持散列(%)?
答案 0 :(得分:21)
引用内森·托尔金顿的话:“最大的问题是%用于printf的双引号字符串。”更多信息是here。
答案 1 :(得分:15)
哈希如何进行字符串化?标量也很明显,数组也是如此。但哈希应该是什么?这样的字符串化有多大用处?它是否比在插值字符串中使用未转义的%字符更有用或更不有用?今天修复在插值字符串中使用%的所有代码需要花费大量工作吗?
如果你能对这些问题给出好的答案,那么我相信P5P愿意听取它们的意见。
答案 2 :(得分:4)
不是“为什么”的答案,但我想我会指出“如何”的各种答案。
当然可以尝试:
#!/usr/bin/perl
use warnings; use strict;
my %hash = (
"no1" => 1,
"no2" => 2,
);
print "@{[ %hash ]}\n";
但是,我不知道会有什么用处。
如果要转储哈希或任何其他复杂数据结构的内容,请根据您的使用情况使用Data::Dumper或YAML或JSON。