题
我有2个数组(@system
,@reserve
).每个包含一个数字列表,我想比较和拼接(也许?)中的数字 @reserve
哪些匹配数字 @system
.
我已经尝试了一些答案来查找和拼接问题,但它们似乎不起作用。使用Perl5.12.4。
数字在 @reserve
将永远是11000。.136000和系统中的数字将始终在 @system
范围但会有所不同。我一直关注的代码看起来像:
my @system = query();
my @reserve = 11000..136000;
foreach my $num (@system) {
my $index = 0;
$index++ until $reserve[$index] eq $num;
splice (@reserve,$index,1);
}
query()只是向系统(PBX)询问数字列表并将它们推入 @system
.
任何帮助表示赞赏。
谢谢,
马蒂
解决方案
你不必和我一起工作 splice
当您改用hashslice时:
my @system = query();
my %reserve ;
@reserve{(11000..136000)} = undef ;
delete @reserve{@system} ;
my @list_of_reserve = sort { $a <=> $b } keys %reserve ;
其他提示
怎么样?:
my @system = query();
my @reserve = 11000..136000;
my %tmp = map{$_ => 1}@system;
@reserve = grep{!exists $tmp{$_}}@reserve;
不隶属于 StackOverflow