我需要将包含多个重复值的输入中的唯一元素添加到数组中。
如何避免将重复值推入 Perl 数组中?
push(@yourarray, $yourvalue) unless grep{$_ == $yourvalue} @yourarray;
在推送之前,这将检查该值是否存在于数组中。如果该值不存在,则会被推送。
如果该值不是数字,您应该使用eq
而不是==
。
你只需要像这样使用哈希:
my %hash;
$hash{$key} = $value; # you can use 1 as $value
...
这将自动覆盖重复的键。
当您需要打印它时,只需使用:
foreach my $key (keys %hash) {
# do something with $key
}
如果您需要对键进行排序,请使用
foreach my $key (sort keys %hash) ...
~~
,我们可以将最低Perl版本设置为5.10.1。use v5.10.1;
use strict;
use warnings;
my @ARRAY1 = qw/This is array of backup /;
my @ARRAY2;
my $value = "version.xml";
sub CheckPush($$) {
my $val = shift (@_);
my $array_ref = shift (@_);
unless ($val ~~ @$array_ref) {
print "$val is going to push to array\n";
push(@$array_ref, $val);
}
return (@$array_ref);
}
@ARRAY1 = CheckPush($value, \@ARRAY1);
print "out\n";
foreach (@ARRAY1) {
print "$_\n";
}
@ARRAY2 = CheckPush ($value, \@ARRAY2);
print "out2\n";
foreach (@ARRAY2) {
print "$_\n";
}
push(@yourarray, $yourvalue) unless $yourvalue ~~ @yourarray;
翻译:将 $yourvalue
添加到 @yourarray
中,前提是 $yourvalue
不在 @yourarray
中。 - Codr
List::MoreUtils
的 uniq 函数。 - squiguy