:) Rob

    Thank you very much for your help.
     Finally, I got this figured out.
[?]

On Wed, Feb 11, 2009 at 9:47 PM, Rob Dixon <rob.di...@gmx.com> wrote:

> kevin liu wrote:
> > Hi everybody:
> >
> >         I have two arrays(@nwarray0 and @nwarray1) in my program and i
> want
> > to make sure that
> > all the elements in @nwarray0 could be found in @nwarray1.
> >         Here is my implementation:
> >         -------------------------------------------------------
> >         foreach my $srctemp ( @nwarray0 ) {
> >
> >             foreach my $tgttemp ( @nwarray1 ) {
> >                 if ( $tgttemp eq $srctemp ) {
> >                     $found = 1;
> >                     last;
> >                 }
> >             }
> >             if ( $found == 1 ) {
> >                 $found = 0;
> >                 next;
> >             }
> >             else {
> >                 return 1;
> >             }
> >         }
> >         --------------------------------------------------------
> >         But this algorithm takes a long time to compare, could you please
> > help to improve this piece of
> > code to less the time needed?
>
> The classical method is to use a hash, but there is also a module
> List::Compare
> that is written to do this kind of job for you. The program below
> illustrates
> both methods.
>
> HTH,
>
> Rob
>
>
> use strict;
> use warnings;
>
> use List::Compare;
>
> # Using List::Compare
> #
> my @nwarray0 = qw/A B C D/;
> my @nwarray1 = qw/A B D E F G/;
>
> my $compare = List::Compare->new(\...@nwarray0, \...@nwarray1);
>
> my @unique = $compare->get_unique;
> print scalar @unique, " unique keys in @nwarray0\n";
>
> # Using a hash
> #
> my %unique;
>
> @uniq...@nwarray0} = ();
> delete @uniq...@nwarray1};
>
> print scalar keys %unique, " unique keys in @nwarray0\n";
>

<<B0C.gif>>

Reply via email to