perl值在';范围';随机数组的构造

perl值在';范围';随机数组的构造,perl,Perl,下一个问题是,我在一个数组中有一些随机值,如果数组中的某个值与我的变量匹配,我想打印一条消息。 例如: my @random_pool = (1, 30, 13, 40, 58, 7); my $value = 17; 我想做的是: if($value in @random_pool) { print "match"; } else { print "not mach"; 如果不是数组而是字符串,那么解决方案是否可行 例如: my @random_pool = (1, 30, 1

下一个问题是,我在一个数组中有一些随机值,如果数组中的某个值与我的变量匹配,我想打印一条消息。 例如:

my @random_pool = (1, 30, 13, 40, 58, 7);
my $value = 17;
我想做的是:

if($value in @random_pool) {
   print "match";
} else {
   print "not mach";
如果不是数组而是字符串,那么解决方案是否可行

例如:

my @random_pool = (1, 30, 13, 40, 58, 7);
my $value = 17;
my $random_pool = "1, 30, 13, 40, 58, 7";
my $value = 17;

if($value in $random_pool) {
   print "match";
} else {
   print "not mach";
多谢各位

if (grep { $_ == $value } @array) {
    print "match\n";
} else {
    print "not match\n";
}
grep{$\ueq$value}@array
在匹配字符串时更合适

对于大型列表,如果
$value
不是
undef
List::Util::first
更有效,因为它不必搜索整个列表:

use List::Util 'first';
if (defined( first { $_ == $value } @array )) { ... }
但我的快速脏搜索是将数组字符串化,并使用正则表达式搜索值

if (" @array " =~ / $value /) { ... }

(它是脏的,因为它可能不适用于边缘情况,例如
@array
中有空格的元素或
$value
有regex元字符)

我会使用map创建哈希:

#!/usr/bin/env perl

use strict;
use warnings;
my @random_pool = (1, 30, 13, 40, 58, 7);

my %is_in_pool = map { $_ => 1 } @random_pool;

my $value = 17;

print "Match\n" if $is_in_pool{$value};

这种方法的优点是,如果要使用不同的值进行迭代,可以重用哈希-
map
迭代数组一次,其中像
grep
这样的东西每次都需要迭代

谢谢你的回复!它起作用了!但对我来说,使用Mob提供的方法更简单!谢谢你的支持time@rooger请注意,这取决于正在进行的查找的数量和数组的大小。