> -----Original Message----- > From: Timothy Johnson [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, July 23, 2002 11:41 AM > To: 'Bob Showalter '; ''Merritt Krakowitzer' '; 'Beginners ' > Subject: RE: Comparing Arrays > > > > 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 > }
But what if the @$ref1 contains an element not in @$ref2? I just found out I can shorten my one-liner to: @foo==@bar && "@{{map {$_, $_} @foo}}{@bar}" eq "@bar" But mine has a similar defect: qw(foo foo bar) is considered equal to qw(foo bar bar) Rats! That's why to stick with proven modules! > > ######################################### > > > > -----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]