基本上,我有一个数组,例如@badvalues
。
我还有另一个数组,例如@values
。
基本上,我想要这样:
对于@badvalues
中的每个元素
查看它是否在@values
中
如果是的话,将其删除
最终,我应该以数组@values
结尾,该数组不包含数组@badvalues
中的任何元素,或者以一个新数组@goodvalues
包含数组@values
的所有元素,而该元素不是。
我知道这听起来很简单,也许是因为我累了,但是在四处搜寻时似乎找不到明确的答案。
最佳答案
# Get only bad values
my %values = map {$_=>1} @values;
my @new_badvalues = grep { !$values{$_} } @badvalues;
# Get only good values
my %badvalues = map {$_=>1} @badvalues;
my @goodvalues = grep { !$badvalues{$_} } @values;
# An alternative
@badvalues{@badvalues} = ();
foreach $item (@values) {
push(@goodvalues, $item) unless exists $badvalues{$item};
}
有关更完整的参考,请参见“ Perl Cookbook”的“第4.7章在一个数组中查找元素,而不是另一个数组”