从数组中删除原始元素而不删除perl中的重复项

时间:2015-11-11 10:05:13

标签: arrays perl duplicates

我有一个包含重复元素的数组。我想一次删除一个元素而不在循环中迭代。此外,如果我删除一个元素,如果该元素存在任何重复元素,它应该保留在数组中。在perl中有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

一个用于在哈希中存储元素的循环,以及一个用于显示剩余元素的grep。所有这些都假设undef没有作为重复数组中的值出现。

use strict;
use warnings;
use Data::Dumper;

my @r = (1..8, 1..8);

my %ref;
push @{ $ref{$_} }, \$_ for @r;

my $to_remove = 2;
undef ${shift @{ $ref{$to_remove} }};
print Dumper \@r;

undef ${shift @{ $ref{$to_remove} }};
print Dumper \@r;

print Dumper [ grep defined, @r ];