print@array和print"之间有什么区别@数组";用perl?
以下面的代码为例:print@array和print"之间有什么区别@数组";用perl?,perl,perl-data-structures,Perl,Perl Data Structures,以下面的代码为例: @array=(1..10); print @array; print "@array"; The output is as follows: 12345678910 1 2 3 4 5 6 7 8 9 10 这是一个关于字符串转换和插值的问题。在perl中,“与”的处理方式不同,因为perl被要求在字符串中插入任何变量 这就是为什么: my $str = "fish"; print "This is a $str\n"; 有效。(使用单引号,则不会)。但对于非字符串的
@array=(1..10);
print @array;
print "@array";
The output is as follows:
12345678910
1 2 3 4 5 6 7 8 9 10
这是一个关于字符串转换和插值的问题。在perl中,
“
与”
的处理方式不同,因为perl被要求在字符串中插入任何变量
这就是为什么:
my $str = "fish";
print "This is a $str\n";
有效。(使用单引号,则不会)。但对于非字符串的内容,perl应用了一些转换规则。对于大多数情况,转换规则非常基本-将数值转换为字符串等效值(以10为基数)。因此:
“只工作”而不是强迫您使用printf
/sprintf
将数值转换为适当的表示形式
因此,获得第一个结果的原因是,print
获取一个参数列表
所以print@array
实际上是print 1,2,3,4,5,6,7,8,9,10;
这将为您提供结果,因为您尚未为打印指定分隔符(您可以通过设置$,
-参见下文)
但是,“@array”
在显式字符串化的上下文中使用@array
,因此它首先解压数组并用空格分隔
此行为由特殊变量$“
控制。你可以在报纸上读到
另见:
您还可以使用$,
来“告诉”print以分离它得到的值。默认情况下,它没有设置(例如未定义-请参见perlvar),因此您可以获得第一个行为
但你可以:
$, = ",";
print @array;
好吧,这就是你的区别:-)你可以看到这里的区别这正是我要写的。但我想我会提到$,
以及$”
。啊,好的观点。我会加上这一点。“如果是单引号,它就不会”危险地接近可怕的“它不起作用”!
$" = ":";
print "@array";
$, = ",";
print @array;