首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl数组元素比较

Perl数组元素比较
EN

Stack Overflow用户
提问于 2015-08-12 08:57:56
回答 1查看 1.1K关注 0票数 0

我是Perl编程方面的新手。我试图比较每个元素的两个数组。这是我的密码:

代码语言:javascript
运行
复制
#!/usr/bin/perl
use strict;
use warnings;
use v5.10.1;

my @x = ("tom","john","michell");
my @y = ("tom","john","michell","robert","ricky");
if (@x ~~ @y)
{
    say "elements matched"; 
}
else 
{ 
    say "no elements matched";
}

当我运行这个程序时,我得到输出no elements matched

因此,我想比较两个数组元素在深度和元素不匹配,这些元素,我想要存储在一个新的数组。因为我现在可以比较唯一匹配的元素,但不能将其存储在一个新的数组中。

如何将这些不匹配的元素存储在新数组中?

请有人能帮我和建议。

EN

回答 1

Stack Overflow用户

发布于 2015-08-12 09:07:50

我将避免在Perl中进行智能匹配-例如,参见here

如果您试图将$y[0]的内容与$x[0]进行比较,那么这是一种方法,它将所有不匹配的内容放入一个新的数组@keep中。

代码语言:javascript
运行
复制
use strict;
use warnings;
use feature qw/say/;

my @x = qw(tom john michell);
my @y = qw(tom john michell robert ricky);

my @keep;
for (my $i = 0; $i <$#y; $i++) {
    unless ($y[$i] eq $x[$i]){
        push @keep, $y[$i];
    }
}

say for @keep;

或者,如果您只想查看一个名称是否存在于另一个数组中(并且对直接比较元素不感兴趣),请使用两个散列:

代码语言:javascript
运行
复制
my (%x, %y);

$x{$_}++ for @x;
$y{$_}++ for @y;

foreach (keys %y){
    say if not exists $x{$_};
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31960494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档