我有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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top