可能重复:
如何检查 Perl 数组是否包含特定值?
我有两个数组@array1 = (1..26);
和@array2 = ('a'..'z');
一个变量$x
。假设$x=5
那么我如何将此值与两个数组和该变量所属的输出状态进行比较@array1
?
可能重复:
如何检查 Perl 数组是否包含特定值?
我有两个数组@array1 = (1..26);
和@array2 = ('a'..'z');
一个变量$x
。假设$x=5
那么我如何将此值与两个数组和该变量所属的输出状态进行比较@array1
?
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.';
}
您可以使用智能匹配:
say $x ~~ \@array1 ? 'first'
: $x ~~ \@array2 ? 'second'
: 'none';
如果您想避免有争议的智能匹配运算符,您可以使用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";