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