我有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
。
感谢任何帮助。
谢谢,
玛蒂
答案 0 :(得分:3)
当您使用hashslice时,您不必使用splice
:
my @system = query();
my %reserve ;
@reserve{(11000..136000)} = undef ;
delete @reserve{@system} ;
my @list_of_reserve = sort { $a <=> $b } keys %reserve ;
答案 1 :(得分:1)
怎么样:
my @system = query();
my @reserve = 11000..136000;
my %tmp = map{$_ => 1}@system;
@reserve = grep{!exists $tmp{$_}}@reserve;