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]