gpt4 book ai didi

perl - 如何基于现有数组的一部分形成一个新数组

转载 作者:行者123 更新时间:2023-12-04 16:27:38 25 4
gpt4 key购买 nike

我试图基于现有数组构建一个新数组。

#!/usr/bin/perl
#join
use warnings;
use strict;

my @names = ('jacob', 'michael', 'joshua', 'mathew');
my @t_names = join ("\t" , @names);
my @t_names2 = join ("\t", $names[0],$names[2]);
print @t_names, "\n";
print @t_names2, "\n";

测试脚本允许我连接旧数组中的 2 个元素以形成一个新数组。但是,如果我的数组有 1000 个元素,并且我想形成一个仅包含 1000 个元素的选择性部分(例如,元素 3 和 3 的倍数)的新数组,该怎么办?我试过 join ("\t", $names[0,2])但 perl 不识别 $names[0,2] (输出表明 $names[0,2] 被“识别”为 $names[2] 。不确定这个错误是什么意思“ multidimensional syntax not supported at join.pl

join不是正确的函数,还有什么其他方法可以从现有数组构建部分数组?谢谢你。

最佳答案

要获取数组的切片,请使用 @names[0,2] ,不是 $names[0,2] .

要获得错误消息的解释,use diagnostics; , 这使:

Multidimensional syntax $names[0,2] not supported at ...

(W syntax) Multidimensional arrays aren't written like $foo[1,2,3]. They're written like $foo[1][2][3], as in C.



这是 perl 注意到你做错了什么,但你试图做的事情是错误的:)

join 创建一个字符串,而不是一个列表,所以大概你只想:
my @new_array = @names[ @indexes_to_select ];

要仅从 3 中选择 3 的倍数的索引:
my @new_array = @names[ grep $_ % 3 == 0, 3..$#names ];

关于perl - 如何基于现有数组的一部分形成一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16112980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com