2

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

どんな助けでも大歓迎です。

ありがとう、

マーティ

4

2 に答える 2

3

splice代わりにハッシュスライスを使用する場合は、作業する必要はありません。

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 に答える