use*_*867 3 printing arrays perl scalar concat
例如:
my @array = ("a","b","c");
print @array; #prints abc
print "Array is: " . @array #prints 3
Run Code Online (Sandbox Code Playgroud)
是什么让这两个印刷语句有所不同?
Joe*_*e Z 12
连接发生在标量上下文中.引用标量上下文中的数组给出其长度.例如:
my $x = @array; # sets $x to the length of @array also.
Run Code Online (Sandbox Code Playgroud)
如果要扩展阵列的内容,可以有多个选项.
如果您只是想像在第一个语句中那样打印数组,则可以将连接更改为逗号.这将与原始示例的行为最相似,包括"$",它指定在列表中的每个元素之后出现的分隔符(包括字符串"Array is:"和最后一个元素@array):
print "Array is: ", @array;
Run Code Online (Sandbox Code Playgroud)
你可以把它放在引号中,它会将它作为一个字符串插入,将元素分开$".请注意,$"默认为单个空格字符.如果您需要将它连接到另一个字符串,这可能很有用:
print "Array is: " . "@array";
Run Code Online (Sandbox Code Playgroud)
如果要将数组元素连接到没有分隔符,或者使用除了之外的显式分隔符$",则可以使用join.同样,这在您构建字符串但不一定立即打印的上下文中非常有用.
print "Array is: " . join( "", @array ); # gives "abc"
print "Array is: " . join( " fred ", @array ); # gives "a fred b fred c"
Run Code Online (Sandbox Code Playgroud)
注意:我在上面的标量上下文中添加了一个链接,由Mark-Jason Dominus进行了很好的解释.值得花时间阅读它.它不是很长.