In the "quick and dirty" category, you can do something like this:

(I'm trying to remember off the top of my head)

##########################################

my $result = ArrayCmp(\@array1,\@array2);
#pass two array references

sub ArrayCmp{
  my($ref1,$ref2) = @_;
  my %tmp = ();
  if(@{$ref1} != @{$ref2}){
    return 0;
    #if arrays are not same length,
    #then skip the rest
  }
  foreach(@{$ref1}){
    $tmp{$_} = 1;
    #create a temporary hash with the elements
    #as keys
  }
  foreach(@{$ref2}){
    return 0 unless $tmp{$_};
    #fail if there is not a key with each
    #element of the second array
  }
  return 1;
  #if we make it this far, they're equal
}

#########################################



-----Original Message-----
From: Bob Showalter
To: 'Merritt Krakowitzer'; Beginners
Sent: 7/23/02 5:49 AM
Subject: RE: Comparing Arrays

> -----Original Message-----
> From: Merritt Krakowitzer [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, July 23, 2002 3:48 AM
> To: Beginners
> Subject: Comparing Arrays
> 
> 
> Hi
> 
> I would like to know how to compare 2 arrays.
> 
> I have 2 arrays and I would like to compare the contents of the data.
> It doesn't matter in which order the data is stored so long 
> as its the same.
> So comparing the bellow should read true, but if they didn't 
> match it would
> be false.
> 
> my @foo = qw(
>         foo bar cat dog
> );
> my @bar = qw(
>        dog cat foo bar
> );
> 
> Hope that made some sense.
> I managed to find a module for comparing arrays but I would 
> prefer not to
> do it that way.

Well, they are equal without regard to order if the following is true:

  @foo==@bar && join($", @{{map {$_, $_} @foo}}{@bar}) eq "@bar"

But the module approach is probably the way to go. :~)

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

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

Reply via email to