【发布时间】:2012-03-14 14:24:24
【问题描述】:
我有 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。
感谢任何帮助。
谢谢,
马蒂
【问题讨论】:
-
虽然使用散列的键作为集合可以更好地解决这个问题,但在编程点上,您的内部循环可能很危险,因为如果
$num没有出现在@987654330 中,它可能会挂起@。此外,您的值似乎是数字,但您使用 string 相等运算符eq比较它们。
标签: perl array-splice