On Fri, Jan 10, 2003 at 10:23:43AM -0600, Jensen Kenneth B SrA AFPC/DPDMPQ wrote:
> In the line
> my $max = (sort {$b<=>$a} ($x, $y, $z))[0];
> 
> What is the "[0]" doing?

This part:

     (sort {$b<=>$a} ($x, $y, $z))

creates a list.  The "[0]" returns the first element in that list.


> Also another question. While messing around with the compact version of if
> statements I tried these.
> 
> $one = 1;
> ($one == 1) ? (print "\$one equals", print "$one") : (print "\$one does not
> ", print "equal 1");
> 
> Returns
> 1
> $one equals 1
> 
> At first I thought the first "1" on a line by itself was a return flag or
> something, 

That's exactly what it is.  To Perl, this:

       print "\$one equals", print "$one"

means this (letters on the left are just for reference):

A)       print a list consisting of:
B)            - the string "\$one equals" and 
C)            - the value returned from evaluating the expression
                      'print "$one"'

Before it can do (A), it needs to figure out the value of (C).  So, it
evaluates (C).  That outputs the value of "$one" (which happens to be
1) to the screen, and returns 1 (because print always returns 1 if
successful).  (A) now has its argumnt list figured out, so it prints
them, which outputs the string "$one equals 1".

Had you done this instead:

    $one = 7;
    ($one == 7) ? 
            (print "\$one equals ", print "$one") 
            : (print "\$one does not ", print "equal 1")
            ;

You would have seen this:

7
$one equals 7


However, why there is a newline after the initial 1, I'm not sure...is
there anything in your code that you haven't shown us?  For example,
did you set the $\ variable?


Given the above, you should be able to step through the other examples
you gave and figure out what's going on.  Just work from the inside
out.

--Dks



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to