该函数print
接受参数列表并打印这些参数。
如果你明确地将一个列表传递给print
then 我希望当它打印出该列表的元素而它们之间没有空格时你不会感到惊讶。
print 'one', 'two', 'three'; # prints "onetwothree
将数组传递给print
完全相同。数组的内容被转换为列表,然后传递给print
;
my @array = qw(one two three);
print @array; # prints "onetwothree"
在这两种情况下,print
接收三个参数并打印这些参数,没有任何东西将它们分开。
实际上,Perl 使用特殊变量$,
来控制print
其参数之间的输出。默认情况下这是一个空字符串,但您可以更改它。
现在让我们考虑你的另一种情况。
my @array = qw(one two three);
print "@array"; # prints "one two three"
print
这个例子中有多少个参数?好吧,这只是一个,不是吗?它是一个单双引号字符串。当 Perl 看到一个双引号字符串时,它会扩展字符串中的所有变量。然后将该扩展的结果传递给print
然后打印它。所以我们需要了解 Perl 如何扩展双引号中的数组。这是在perldata手册页中定义的。
数组插值
通过将元素与 $" 变量中指定的分隔符连接起来,数组和切片被插入双引号字符串(如果指定了“use English;”,则为 $LIST_SEPARATOR),默认为空格。
因此,默认情况下,Perl 通过在元素之间插入空格来将数组插入双引号字符串。您可以通过更改$"
.
这两个示例可能看起来相同,但实际上它们非常不同。