Arrays 在Perl中,使用逗号或点对数组/列表进行字符串连接排序

Arrays 在Perl中,使用逗号或点对数组/列表进行字符串连接排序,arrays,perl,list,hash,Arrays,Perl,List,Hash,我有: 输出:abcde按任意键继续 为什么没有回线 然后,我尝试使用句点连接运算符: #!c:\Dwimperl\perl\bin\perl.exe use strict; use warnings; # Define an array my @letters = ('b', 'c', 'a', 'e', 'd'); print sort @letters , "\n"; 输出:5 按任意键继续 为什么\n在这里工作,但返回数组长度 任何对官方文件的引用都会有所帮助。当你这样做的时候 #

我有:

输出:
abcde按任意键继续
为什么没有回线

然后,我尝试使用句点连接运算符:

#!c:\Dwimperl\perl\bin\perl.exe

use strict;
use warnings;

# Define an array
my @letters = ('b', 'c', 'a', 'e', 'd');
print sort @letters , "\n";
输出:
5
按任意键继续

为什么
\n
在这里工作,但返回数组长度

任何对官方文件的引用都会有所帮助。

当你这样做的时候

#!c:\Dwimperl\perl\bin\perl.exe

use strict;
use warnings;

# Define an array
my @letters = ('b', 'c', 'a', 'e', 'd');
print sort @letters . "\n";
您实际上是在标量上下文中计算
@letters
,并附加一个换行符,然后对该数组进行排序。由于数组的长度为5,因此得到的是数字5

试着这样做:

print sort @letters . "\n";
my @letters = ('b', 'c', 'a', 'e', 'd');
print sort(@letters) . "\n";
# This doesn't produce any output
您将输出:

my @letters = ('b', 'c', 'a', 'e', 'd');
print sort(@letters . "\ntest");
在标量上下文中,
sort
的行为未定义。所以你不能做:

5
test
您可能希望执行以下操作:

print sort @letters . "\n";
my @letters = ('b', 'c', 'a', 'e', 'd');
print sort(@letters) . "\n";
# This doesn't produce any output
输出:

my @letters = ('b', 'c', 'a', 'e', 'd');
print join(",", sort(@letters)) . "\n";

对于第一种情况,您将在字母列表中添加
\n
,然后对其进行排序。所以它在一开始就结束了。下面是一个例子:

a,b,c,d,e
产出:

my @letters = ('b', 'c', 'a', 'e', 'd');
print sort @letters , "\n", 1, 2, 3;
my @letters = ('b', 'c', 'a', 'e', 'd');
print sort(@letters), "\ntest";

通常,使用括号来明确您想要获得的行为是很有用的

# It outputs a newline and then the characters:

123abcde
产出:

my @letters = ('b', 'c', 'a', 'e', 'd');
print sort @letters , "\n", 1, 2, 3;
my @letters = ('b', 'c', 'a', 'e', 'd');
print sort(@letters), "\ntest";
看看:我相信这就是你要找的。甚至可能: