I give up...in the last example, why should they ever compare different?

Stewart


>On Thu, May 03, 2001 at 06:28:31PM +0200, Detlef Lindenthal wrote:
>  > How can I test if two lists are equal?
>  >
>  > Examples:
>  > These two lists should be equal:
>  > @List1a = (1, 2, 3);
>  > @List1b = (1, 1+1, 1+1+1);
>  >
>  > No pair of these should be equal:
>  > @List2a = ("one", "two", "three");
>  > @List2b = ("two", "one", "three");
>  > @List2c = ("one", "two", "three", "four");
>  >
>  > Is there an elegant way?
>  > If not, I can write a sub for it.
>  >
>
>perldoc -q arrays
>
>...
>
>How do I test whether two arrays or hashes are equal?
>
>The following code works for single-level arrays.  It uses a stringwise
>comparison, and does not distinguish defined versus undefined empty
>strings.  Modify if you have other needs.
>
>     $are_equal = compare_arrays(\@frogs, \@toads);
>
>     sub compare_arrays {
>         my ($first, $second) = @_;
>         local $^W = 0;  # silence spurious -w undef complaints
>         return 0 unless @$first == @$second;
>         for (my $i = 0; $i < @$first; $i++) {
>             return 0 if $first->[$i] ne $second->[$i];
>         }
>         return 1;
>     }
>
>For multilevel structures, you may wish to use an approach more
>like this one.  It uses the CPAN module FreezeThaw:
>
>     use FreezeThaw qw(cmpStr);
>     @a = @b = ( "this", "that", [ "more", "stuff" ] );
>
>     printf "a and b contain %s arrays\n",
>         cmpStr(\@a, \@b) == 0
>             ? "the same"
>             : "different";
>
>This approach also works for comparing hashes.  Here
>we'll demonstrate two different answers:
>
>     use FreezeThaw qw(cmpStr cmpStrHard);
>
>     %a = %b = ( "this" => "that", "extra" => [ "more", "stuff" ] );
>     $a{EXTRA} = \%b;
>     $b{EXTRA} = \%a;
>
>     printf "a and b contain %s hashes\n",
>         cmpStr(\%a, \%b) == 0 ? "the same" : "different";
>
>     printf "a and b contain %s hashes\n",
>         cmpStrHard(\%a, \%b) == 0 ? "the same" : "different";
>
>
>The first reports that both those the hashes contain the same data,
>while the second reports that they do not.  Which you prefer is left as
>an exercise to the reader.
>
>...

---
Stewart Leicester              |  "Ad Astra Per Aspera"
JenSoft Technologies           |  <http://www.id2k.com>
<mailto:[EMAIL PROTECTED]>  |  Guest passcode: 1069340

Reply via email to