@tools = ("hammer", "chisel", "screwdriver", "boltcutter",
"tape", "punch", "pliers");
@fretools =("hammer", "chisel", "screwdriver" ,"blade");
push @tools,@fretools if grep @tools,@fretools
Run Code Online (Sandbox Code Playgroud)
我得到了工具
@tools=("hammer", "chisel", "screwdriver", "boltcutter",
"tape", "punch", "pliers", "blade");
Run Code Online (Sandbox Code Playgroud)
有什么简单的方法吗?
该列表:: MoreUtils CPAN模块有一个uniq
函数来做到这一点.如果您不想依赖于安装此模块,您只需uniq
从模块的源代码中复制该函数(因为它是纯Perl)并将其直接粘贴到您自己的代码中(具有适当的确认).通常,使用CPAN代码的优势在于其行为已记录在案并且经过了充分测试.
use strict;
use warnings;
use Data::Dumper;
sub uniq (@) {
# From CPAN List::MoreUtils, version 0.22
my %h;
map { $h{$_}++ == 0 ? $_ : () } @_;
}
my @tools = ("hammer", "chisel", "screwdriver", "boltcutter",
"tape", "punch", "pliers");
my @fretools =("hammer", "chisel", "screwdriver" ,"blade");
@tools = uniq(@tools, @fretools);
print Dumper(\@tools);
__END__
$VAR1 = [
'hammer',
'chisel',
'screwdriver',
'boltcutter',
'tape',
'punch',
'pliers',
'blade'
];
Run Code Online (Sandbox Code Playgroud)