-3

重複の可能性:
ある配列のどの要素が別の配列にないかを見つけるにはどうすればよいですか?

@a=qw(one two three four five six);
@b=qw(zero one two three four seven);

私は印刷することを期待しています:

zero five six seven

これらの要素は両方のアレイに存在しません。

4

4 に答える 4

1
#!/usr/bin/perl

@a=qw(one two three four five six);
@b=qw(zero one two three four seven);

$words{$_}++ for (@a, @b);
while (($k, $v) = each %words) {
    next if $v > 1;
    print "$k ";
}
于 2012-07-24T11:30:05.337 に答える
0
my %hash = map { $_ => 1 } @b;

while( my $el = shift @a )
{
    print $el unless defined $hash{ $el };
    $hash{ $el } = 0;        
}

foreach( keys %hash )
{
    print $_ if $hash{ $_ } == 1;
}

編集:$_を$elに変更し、「print」を削除しました

于 2012-07-24T11:20:17.477 に答える
0
use strict;
use warnings;

my @a=qw(one two three four five six); 
my @b=qw(zero one two three four seven);
my %seen;
foreach my $a (@a) {
  $seen{$a} = 1;
}

foreach my $b (@b) {
  if (defined $seen{$b} and $seen{$b} == 1) {
    $seen{$b} = -1; 
  } else {
    $seen{$b} = 2;
  }
}

foreach my $k (keys %seen) {
  print "$k\n" if $seen{$k} != -1; 
}
于 2012-07-24T11:21:36.537 に答える
0
my %hash; $hash{$_}++ for @a,@b;
say join " ", grep { $hash{$_} == 1 } keys %hash;
于 2012-07-24T11:40:07.590 に答える