in reply to Re: assigning the maximum of two numbers
in thread assigning the maximum of two numbers

I just feel compelled to reply:

my $max_xy = ($x,$y)[$x<$y]

I have never seen that before. You get +100 Evan points for that show of cunning. I plan to write programs around this in the future. I feel it worthy to note though that you lack a special vital caveat. Your code can be borked if one utilizes $[, ex $[=1, You might want to append it slightly:

my $max_xy = ($x,$y)[abs( ($x<$y)+$[ )];


Evan Carroll
www.EvanCarroll.com


Grandfather WINS!

Congratulations on your inabliity to pick up on a joke, your prize.. Amulet of a Sense Of Humor (+5 Sense Of Humor). With the amulet equiped your sense of humor is now: 5

Congrats again.

Replies are listed 'Best First'.
Re^3: assigning the maximum of two numbers
by GrandFather (Saint) on Nov 03, 2005 at 03:30 UTC

    $[ is nasty, nasty, nasty, and is deprecated. If all Perl had to be written on the off chance that $[ may have changed, almost no Perl project would get completed.

    For any new code it should be completely safe to ignore $[. About the only good use I can think of for it is to write nasty obfu code, or maybe for Golf.


    Perl is Huffman encoded by design.
Re^3: assigning the maximum of two numbers
by ikegami (Patriarch) on Nov 04, 2005 at 20:15 UTC
    I saw that used a lot over 15 years ago in BASIC code. BASIC didn't have a ternary conditional operator, but it was possible to emulate it.
    $a = $i > $j ? 6 : 10;
    could be written as the following in BASIC (knowing that false is 0 and true is -1):
    LET a = (i > j) * 4 + 10;
    just as it could be written as the following in Perl (knowing that false is 0 and true is 1):
    $a = ($i > $j) * -4 + 10;