Perl:如何检查整数列表中的整数是否在数组中

时间:2010-12-31 16:05:27

标签: arrays perl

与我之前的问题类似,但这一次我想知道整数列表中的整数是否在数组中。

例如,如果我有:

@int_array = (7,101,80,22,42);

如何检查整数值80或77或99是否在数组中?有没有比为列表中的每个整数执行单独的智能匹配更好的方法?我正在使用Perl 5.10.1

5 个答案:

答案 0 :(得分:4)

我认为这里最好的答案是:

perldoc -q "How can I tell whether a certain element is contained in a list or array?"

http://perldoc.perl.org/perlfaq4.html#How-can-I-tell-whether-a-certain-element-is-contained-in-a-list-or-array%3f

答案 1 :(得分:2)

#!/usr/bin/env perl
use warnings;
use 5.012;

my @array = (7,101,80,22,42);
my @items = (77,81,99);
my $it = join '|', @items;
my $re = qr/^(?:$it)\z/; 
say $re ~~ @array ? 'OK' : 'Not OK';

答案 2 :(得分:1)

您可以将数组转换为哈希值,因此,无需在每次要查找内容时搜索整个列表,都可以立即找到它。

答案 3 :(得分:0)

最简单的方法是将int数组转换为一个散列,其中int是键和值。然后,您可以使用if (exists($intHash{$iVal))

直接查找

答案 4 :(得分:0)

还有'grep'方法

if(grep / $ num /,@ array){print“yerp!\ n”; }