使用数组名称反转数组并引用数组

Roh*_*ain 3 perl

我已经声明了一个数组,并且对这个数组的引用如下: -

my @array = (1, 2, 3, 4);
my $aref = \@array;
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试使用数组名称和引用名称来反转数组.

print reverse @array, "\n";
print reverse @{$aref}, "\n";
Run Code Online (Sandbox Code Playgroud)

这样工作正常,并在两种情况下打印反转阵列: -

4321
4321
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在同一行中打印反向,它会给我一个奇怪的结果: -

print reverse @array, reverse @{$aref}, "\n";
Run Code Online (Sandbox Code Playgroud)

现在,我得到了这个输出: -

1234
4321
Run Code Online (Sandbox Code Playgroud)

如果我在其间添加换行符: -

print reverse @array, "\n", reverse @{$aref}, "\n";
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出: -

1234

4321
Run Code Online (Sandbox Code Playgroud)

所以,你可以看到两个问题: -

  • 1,使用名称数组没有反转
  • 2,在两个反转阵列之间有一个额外的换行符.

我无法理解这种行为,为什么会发生这种情况.此外,我通过该函数的文档reverse来检查是否有任何关于此行为的提及,但我没有用餐.谁能解释一下这里发生了什么?

ike*_*ami 6

reverse @digits, reverse @$digits, "\n"
Run Code Online (Sandbox Code Playgroud)

手段

reverse(@digits, reverse(@$digits, "\n"))
Run Code Online (Sandbox Code Playgroud)

你要

reverse(@digits), reverse(@$digits), "\n"
Run Code Online (Sandbox Code Playgroud)

或者干脆

reverse(@$digits, @digits), "\n"
Run Code Online (Sandbox Code Playgroud)