Perl:如何同时访问数组中的多个非连续元素?

时间:2012-01-23 16:48:07

标签: perl

我想查询的数组在执行期间不会改变:

my @const_arr=qw( a b c d e f g);

输入是一个包含我想要访问的索引的字符串,例如:

my $str ="1,4";

$str之外的某些内容(除@subarray = @const_arr[$str]中的索引之外)还会导致@subarray包含[b,e]

4 个答案:

答案 0 :(得分:5)

如果索引在字符串中,您可以拆分字符串以获取它们:

@array    = qw(a b c d e);
$indices  = '1,4';
@subarray = @array[split /,/, $indices];
print "@subarray\n";

答案 1 :(得分:4)

数组切片将执行此操作:

@const_arr=qw(a b c d e);
@subarray=(@const_arr)[1,4];
print "@subarray"'

答案 2 :(得分:4)

my @const_arr = qw(a b c d e f);  # the {...} creates a hash reference, 
                                  # not what you wanted

my $str = "1,4";

my @idx = split /,/ => $str;

my @wanted = @const_arr[@idx];

或一行:

my @wanted = @const_arr[split /,/ => $str];

答案 3 :(得分:3)

@const_arr应该像这样开始:

my @const_arr = qw(a b c d e f);

然后您可以通过以下方式访问1和4元素:

@const_arr[1,4]