0

可能重复:
如何检查 Perl 数组是否包含特定值?

我有两个数组@array1 = (1..26);@array2 = ('a'..'z');一个变量$x。假设$x=5那么我如何将此值与两个数组和该变量所属的输出状态进行比较@array1

4

3 回答 3

5

Perl 5.10 和更高版本有一个新的智能匹配运算符,可以轻松完成这项任务:

if ($x ~~ @array1) {
  say '$x is in @array1';
}
elsif ($x ~~ @array2) {
  say '$x is in @array2';
}
else {
  say '$x is not in either array.';
}
于 2012-11-01T10:40:46.837 回答
3

您可以使用智能匹配:

say   $x ~~ \@array1 ? 'first'
    : $x ~~ \@array2 ? 'second'
    : 'none';
于 2012-11-01T10:37:16.657 回答
2

如果您想避免有争议的智能匹配运算符,您可以使用grep.

say   grep { $x eq $_ } @array1 ? "first"
    : grep { $x eq $_ } @array2 ? "second"
    : "none";

如果您重复执行此操作,您应该在此处使用哈希。

my %array1 = map { $_ => 1 } @array1;
my %array2 = map { $_ => 1 } @array2;

say   $array1{$x} ? "first"
    : $array2{$x} ? "second"
    : "none";
于 2012-11-01T10:53:36.880 回答