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