Perl - 加入数组元素直到指定长度

Pra*_*thi 3 arrays string perl join

我有一个字符串数组,表示其长度可以是 1 到 20 之间的任何地方。我需要将数组的第 1 个 3 元素连接到一个字符串中。我用了。

@a = ("Hello","world","welcome");
$b = join(":",@a[0..2])
Run Code Online (Sandbox Code Playgroud)

这会产生所需的输出Hello:World:welcome

但是当数组的长度小于 3 时说 @a = ("hello","wolrd")

我得到Hello:world:作为输出。如果我有 1 个变量,我将Hello::作为输出。

我想根据数组的长度限制加入。有没有办法做到这一点?

Gri*_*nnz 5

使用 List::Util 1.50 或更高版本,您将获得head函数,这对此类事情非常有用,因为它最多只能返回列表中的元素数量。

use strict;
use warnings;
use List::Util 1.50 'head';
my @array = ('hello', 'world');
my $joined = join ':', head 3, @array; # hello:world
Run Code Online (Sandbox Code Playgroud)

剪接功能可以作为一个-穷人的头/尾,但它需要一个数组具体且将删除从该阵列返回的元素。

use strict;
use warnings;
my @array = ('hello', 'world');
my $joined = join ':', splice @array, 0, 3; # hello:world
# @array is now empty
Run Code Online (Sandbox Code Playgroud)

  • @zdim 的答案也允许这样做,因为它基于数组大小(但头/尾是任意列表的唯一简单解决方案,无需分配给数组)。 (2认同)

zdi*_*dim 5

还可以检查数组大小并加入你想要的,或者整个数组

my $joined = join ':', (@ary > 3 ? @ary[0..2] : @ary);
Run Code Online (Sandbox Code Playgroud)