in reply to Re: Re: sort mechanism
in thread sort mechanism

Um... right. I don't think I was completely clear - what I was trying to point out was that <=> has different behavior when comparing lists than when comparing scalars.

Although comparing two lists of a single scalar each is, as you said, exactly like comparing the naked scalars.

So what have we learned?

  1. I shouldn't node before coffee, no matter what the hour.
  2. "Naked Scalars" would be a pretty good name for a rock and roll band.
  3. So would "Spaceship Operator."
  4. I still can't find where <=>'s behavior in list context is documented.
Peace,
-McD

Replies are listed 'Best First'.
Re: Re: Re: Re: sort mechanism
by extremely (Priest) on Apr 07, 2001 at 00:01 UTC
    The equality operators apply scalar context to both sides. Try this out and see. Operators apply context. I don't think they often respond to it but with perl anything is possible =)
    my @a = keys %env; my @b = values %env; my @c = ( "equal", "a > b", "b > a" ); print ($c[@a<=>@b]),$/;

    No really, damn good band names... =)

    --
    $you = new YOU;
    honk() if $you->love(perl)

      Ok, then riddle me this:

      #!/usr/local/bin/perl -l my @a = (1, 2, 3); my @b = (1, 2, 4); my @c = ( "equal", "a > b", "b > a" ); print ($c[@a<=>@b]); print ($c[@b<=>@a]); print ($c[(1, 2, 3)<=>(1, 2, 4)]); print ($c[(1, 2, 4)<=>(1, 2, 3)]);

      Produces:

      equal
      equal
      b > a
      a > b
      
      Something about the difference between an array and a list, I suspect - a distinction oft unclear in my mind, regardless of caffine levels.

      Peace,
      -McD

        A LIST in SCALAR context returns its last item. An ARRAY in SCALAR context returns its count.

        A LIST in ARRAY/LIST context returns a LIST. An ARRAY in ARRAY/LIST context returns a LIST.

        That gets just about everyone at one time or another. It flat *BOGGLED* me for a while. Try this: perl -e 'print scalar( (1,2,3,4) ),$/'

        --
        $you = new YOU;
        honk() if $you->love(perl)