作者:wuqing0625 | 来源:互联网 | 2023-02-01 11:02
1> Sobrique..:
这是关于字符串转换和插值的问题.在perl中,"
被区别对待'
,因为perl被要求插入字符串中的任何变量.
这就是为什么:
my $str = "fish";
print "This is a $str\n";
作品.(用单引号,它不会).但是对于不是字符串的东西,perl应用了一些转换规则.对于大多数情况来说非常基本 - 数值变为等效的字符串(在基数10中).所以:
my $num = 10;
print "The number is $num\n";
"只是工作"而不是强迫您使用printf
/ sprintf
格式化将数值转换为适当的表示.
因此,获得第一个结果的原因是print
需要一个参数列表.
所以print @array
实际上是print 1,2,3,4,5,6,7,8,9,10;
.
这会给你结果,因为你没有为你指定一个分隔符print
.(你可以通过设置来做到这一点$,
- 见下文)
然而"@array"
,使用@array
在一个显式字符串化上下文,因此首先将其解压缩阵列和空间分离它.
此行为由特殊变量控制$"
.你可以在这里读到这个perlvar
$" = ":";
print "@array";
另请参见:将数组插入字符串
您还可以"告诉"print使用它来分隔它所获得的值$,
.默认情况下,它没有设置(例如是undef - 另见perlvar) - 所以你得到了你的第一个行为.
但你可以:
$, = ",";
print @array;