有没有直接的方法来获取数组元素的索引,给定perl中的元素?

时间:2010-12-28 04:07:48

标签: arrays perl

是否有直接的方法来找出数组元素的索引, 比如说 @ a = qw(a b c);

你如何获得元素b的索引; 我知道它的1,但想象一下大阵列的这种情况。

3 个答案:

答案 0 :(得分:6)

如果您经常需要这样做,您可能需要哈希(除了数组之外或代替数组):

my @array = qw(a b c);
my %hash;
@hash{ @array } = 0..$#array;
print $hash{b}; # 1

答案 1 :(得分:3)

假设在“b”中搜索“b”时“回答”仍为1:

@a = qw(a b b c);

然后,使用模块List::MoreUtilsfirstidx(又名first_index):

use List::MoreUtils qw{ firstidx };

print firstidx { $_ == 'b' } @a;

唯一的缺点是List :: MoreUtils不是(AFAICS)核心模块 - 所以它必须从CPAN安装。至少,Perl documentation没有记录它。

答案 2 :(得分:1)

我很确定如果你所拥有的只是对它的引用(例如,\$a[1]),就没有办法。但是根据你所说的,你当然可以在数组中搜索“b”的循环,并记下你找到它时所处的索引。