2011-01-13 43 views
2

为什么'说'%hash''不能以与标量和数组相同的方式工作?为什么'%hash''不能以与标量和数组相同的方式工作?

#!/usr/bin/perl 
use strict; 
use warnings; 
use Modern::Perl; 
use Test::More; 

my $s = "Hello, World!"; 
say $s; 
say "$s"; 

my @a = ("Hello", "World!"); 
say @a; 
say "@a"; 

my %h = ("Hello", "World!"); 
say %h; 
say "%h"; 

D:\TEST\perl>perl 1.pl 
Hello, World! 
Hello, World! 
HelloWorld! 
Hello World! 
HelloWorld! 
%h 
+0

第一次看到“say” – Gordon

+0

@toolic插值是由'qq'运算符(其中双引号是特殊情况)执行的。 'print'或者'say'不做内插处理,只是接收处理后的字符串并输出。 –

+0

@Gordon'say'是自2007年12月18日发布的5.10.0版Perl的稳定版本的一部分。 –

回答

7

因为它会搞砸printf语法?

%d = ('key' => 'value'); 
printf "The answer is %d\n", 4; # is %d a format symbol or the hash table? 
6

简短的回答是一个简单的“因为这是它的方式。” Sigil%不会在双引号字符串中触发插值。

我没有明确的合理化,但它可能是以下的混合:

  • 用printf风格的格式
  • 有做这件事的方式不止一种冲突。你喜欢空间分隔吗?只有钥匙?对之间的不同分隔符和一个键及其值?
相关问题