in reply to

I love the soliloque. Just one thing though - it should be:
&& by_opposing() eq "end them"))

Philosophical/religious question:

Given the tiny number of failure cases, should Perl really have two sets of comparison/equality operators?

Replies are listed 'Best First'.
by chromatic (Archbishop) on Apr 11, 2000 at 21:38 UTC
    If Perl made a distinction between numerals in scalars and characters in scalars, yes. As the typing system is weak (that is, a combination of internal Perl magic and context determine which operation is more appropriate), it's helpful to be able to specify explicitly which kind of comparison is desired.

    That's also why you'll see empty lists and the keyword scalar sometimes -- just a way of being sure that the operation has the desired effect by enforcing context and giving hints to the internal magic.

    (Now things like && and and are merely syntactic sugar designed to make Perl Poetry more readable. Right. :)

      'and' and 'or' are not merely the syntactic sugar (1) equivalents of && and || - they have a lower precedence. I prefer using && and ||, but 'and' and 'or' come in quite handy occasionally.

      (1) A lovely phrase. I wouldn't mind if perl had more for-foreach like things, just so I could sling the phrase around more often. :)

by btrott (Parson) on Apr 11, 2000 at 20:09 UTC
    By two sets, do you mean "eq" and "==", "gt" and ">", etc.?

    A string comparison is much different than a numeric comparison. Look:

    $string = "556foo"; $num = 556; print "string comparison equal" if $string eq $num; print "num comparison equal" if $string == $num;
    The result?
    num comparison equal
    So if these are the sets of operators that you're referring to, they're definitely not redundant; you couldn't simply drop one set and have the same functionality as you do now.

    Are you proposing that we differentiate between string and numeric comparisons in some other way than the operators?

by turnstep (Parson) on Apr 11, 2000 at 19:44 UTC

    Which two sets? || and 'or', or perhaps <=> and 'cmp', or even > and 'gt'? None are redundant, as far as I am concerned.