我有一个可能的值列表:
@a = qw(foo bar baz);
如何检查@a中存在或不存在值$ val的简明方法?
一个明显的实现是循环列表,但我相信TMTOWTDI。
感谢所有回答的人!我想强调的三个答案是:
>接受的答案 – 最“内置”和向后兼容的方式。
> RET’s answer是最干净的,但仅适用于Perl 5.10及更高版本。
> draegtun’s answer(可能)有点快,但需要使用一个额外的模块。我不喜欢添加依赖关系,如果我可以避免它们,在这种情况下不需要性能差异,但如果你有一个1,000,000元素的列表,你可能想给这个答案一个尝试。
解决方法
Perl的grep()函数的设计是为了做到这一点。
@matches = grep( /^MyItem$/,@someArray );
或者您可以将任何表达式插入匹配器
@matches = grep( $_ == $val,@a );