
Chris Charley
User
Jul 21, 2012, 6:13 PM
Post #2 of 2
(9107 views)
|
Re: [tallamohan] Suggest any Regular Expression, Please
[In reply to]
|
Can't Post
|
|
From perlfaq4, How do I compute the difference of two arrays? How do I compute the intersection of two arrays?. This doesn't answer your question directly, but it may give you some idea.
Use a hash. Here's code to do both and more. It assumes that each element is unique in a given array: @union = @intersection = @difference = (); %count = (); foreach $element (@array1, @array2) { $count{$element}++ } foreach $element (keys %count) { push @union, $element; push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element; } Note that this is the symmetric difference, that is, all elements in either A or in B but not in both. Think of it as an xor operation. Here is a solution developed by Randal Schwartz but seems to fit your problem in another way from the faq.
#!/usr/bin/perl use strict; use warnings; my ($word1, $word2) = qw/ abcd abcdxyz /; my %letters; $letters{$_} .= 'a' for split //, $word1; $letters{$_} .= 'b' for split //, $word2; my @uncomman; for my $ltr (keys %letters) { push @uncomman, $ltr if $letters{$ltr} =~ /^b/ || $letters{$ltr} =~ /a$/; } print @uncomman;
|