回答
$str = "A";
@arr = ('A','B','C','D');
print "Yes" if $str ~~ @arr;
'print“是”if'A'~~ ['A','B','C','D'] ;'也可以,但使用smartmatch可能不是最好的主意。 –
智能匹配是experimental,将变更或消失,在未来的版本。您将在Perl 5.18+版本中得到相同的警告。下面是选择:
使用grep
#!/usr/bin/perl
use strict;
use warnings;
my $str = "A";
print "Yes" if grep {$_ eq 'A'} qw(A B C D);
使用任何
#!/usr/bin/perl
use strict;
use warnings;
use List::Util qw(any);
print any { $_ eq 'A' } qw(A B C D);
使用哈希
#!/usr/bin/perl
use strict;
use warnings;
my @array = qw(A B C D);
my %hash = map { $_ => 1 } @array;
foreach my $search (qw(A)) #enter list items to be searched here
{
print exists $hash{$search};
}
另请参阅:
- match::smart - 提供匹配运算符| M |其行为与(比如Perl 5.18)实验性智能匹配算子或多或少相同。
- Syntax::Feature::Junction - 提供关键字的任何,全部,无,或一个
- 您也可以使用List::Util::first这是更快,因为它停止迭代,当它找到一个匹配。
我使用的是perl v5.16.3,我没有收到任何警告。 – CJ7
因为它在5.18+版本中已被弃用。 –
List :: Util :: first和List :: Util :: any都会在找到匹配时立即停止迭代,所以我不确定为什么要提供'first'作为替代。 'first'还要求你检查undef是否有任何列表元素可能是虚假的:如果首先定义{...} @ array',则说'匹配',而不是简单地说'匹配'如果任何{...} @ array' – ThisSuitIsBlackNot
您可以将您的数组转换为散列。然后你可以有效地(在不变的时间内或者(1))检查你的字符串是否在原始数组中。下面是关于如何查找字符串'C'
两种不同的方法:
#!/usr/bin/perl
use strict;
use warnings;
my %hash1 = map {$_ => 0} qw/A B C D/;
print 'Yes' if exists $hash1{'C'};
#!/usr/bin/perl
use strict;
use warnings;
my %hash2;
@hash2{qw/A B C D/} =();
print 'Yes' if exists $hash2{'C'};
当然像往常一样在Perl,TIMTOWTDI但。
- 1. 检查变量是否在列表中
- 2. Python 3如何检查一个变量是否在列表中
- 3. 如何检查变量是否在python
- 4. 如何检查参数值是否在常量列表中
- 5. 如何检查变量是否为CFString?
- 6. 如何检查变量是否定义?
- 7. 如何检查变量是否为空?
- 8. 如何检查一个列表是否在Python中有重复的变量?
- 9. JavaScript:如何检查变量是否存在变量名?
- 10. 检查整数是否存在于变量几何序列中
- 11. 如何检查空格/制表符是否在变量前面?
- 12. 如何检查SQL Server中的表变量是否为空?
- 13. Python:检查项目是否存在可变数量的列表
- 14. 如何检查变量是否是sympy表达式?
- 15. 检查是否只设置了变量列表中的一个变量
- 16. 如何检查列表中的每个元素是否相同(设置)变量
- 17. 如何检查列表中的多个元素是否等于变量?
- 18. 如何检查数组是否列表?
- 19. 如何检查jquery中是否存在变量
- 20. 如何检查数组中是否存在变量?
- 21. 如何检查目标变量是否在数组中?
- 22. 如何检查rspec中是否存在辅助方法/变量?
- 23. 如何在UNIX中检查变量是否为编号
- 24. 在Emacs Lisp中,如何检查变量是否被定义?
- 25. 如何检查变量是否在Prolog中实例化?
- 26. 如何检查变量是否未在Swift中初始化?
- 27. 如何检查广播变量在Spark 2.0中是否有效?
- 28. 如何在Perl中检查几个变量是否为空
- 29. 如何检查变量是否在D中声明?
- 30. 如何检查变量是否在内存中使用javascript
smartmatch'~~'但它是实验性的。 – mkHun
有没有办法使用匿名数组,或者你必须做我在我的答案中做了什么? – CJ7
@ CJ7:不相关,但我注意到,你问的大部分问题都处于开放状态。请接受这些问题的答案以关闭它们(因为您对答案感到满意)。谢谢。另见:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –