Kenny Madsen wrote:
> 
> I define two arrays - one is an active changing file  ( @unix = ps -ef ) and
> need to compare it to a static text file @static = `cat myfile`.
> 
> Would someone help me on the syntax of greping for @static matches in the
> @unix array.
> 
> For example
> 
> #!/usr/bin/perl -w;
> use strict;
>  my @unix = `ps -ef `;
>  my @static = `cat myfile`;
>  my @final = grep { @static} @unix;
> print @final;  <==== I am wanting this to return only the files in myfile
> that match the @unix array.
> 
> I am not sure if I need to assign a variable, for loop etc with in the { }
> to get the pattern matching results I need.


This is a Frequently Asked Question that is described in perlfaq4.pod.

perldoc -q "How do I compute the intersection of two arrays?"

Found in /usr/lib/perl5/5.6.0/pod/perlfaq4.pod
       How do I compute the difference of two arrays?  How do I
       compute the intersection of two arrays?

       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.


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to