> > 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"
Thanks, this was perfect for my situation, the arrays contain file listing in directories, so there cant be duplicates. Well unless u have a file like "foo" and "foo " but thats highly unlikely i think. I was hoping you could explain your one liner to me from what i can tell, it *should* be giving an error about being unable to coerce an array to a hash, but it seems to work fine, it's driving me nuts :) Merritt > > 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] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]