2

我有 2 个数组(@system, @reserve)。每个都包含一个数字列表,我想比较和拼接(也许?)@reserve匹配数字的数字@system

我已经尝试了一些响应来查找和拼接问题,但它们似乎没有用。使用 Perl 5.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.

任何帮助表示赞赏。

谢谢,

马蒂

4

2 回答 2

3

splice当您使用 hashslice 时,您不必使用:

my @system = query();

my %reserve ;
@reserve{(11000..136000)} = undef ;

delete @reserve{@system} ;
my @list_of_reserve = sort { $a <=> $b } keys %reserve ;
于 2012-03-14T14:38:25.797 回答
1

怎么样:

my @system = query();
my @reserve = 11000..136000;
my %tmp = map{$_ => 1}@system;
@reserve = grep{!exists $tmp{$_}}@reserve;
于 2012-03-14T15:04:11.437 回答