函数print
接受参数列表并打印这些参数。
如果您明确地将一个列表传递给print
,那么我希望您在打印出列表中的元素之间没有空格时不会感到惊讶。
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中定义。
阵列内插
阵列和切片通过 接合与在$”变量 ($ LIST_SEPARATOR如果‘指定使用英语的分隔符元素插入到双引号字符串;指定’ ),默认情况下空间。
所以,在默认情况下,由Perl的元素之间插入空格阵列插值到双引号字符串,可以通过更改的值改变这种行为。
这两个例子可能看起来一样,但实际上它们很不相同。
务必使用'use strict;使用警告;'在你的程序中。如果有的话,这会告诉你'未加引号的字符串“数组”可能会与将来的保留字冲突......,这是使用诸如'array'之类的裸词时得到的警告。 – TLP 2013-04-10 20:11:34