Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
print@array和print"之间有什么区别@数组";用perl?_Perl_Perl Data Structures - Fatal编程技术网

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;