in reply to comparing two values under 'perl -w'

How about creating a sub to do this?

#!/usr/bin/perl -w use strict; sub SpecialEqual { my $pVal1 = shift; my $pVal2 = shift; return 1 unless (defined $pVal1 or defined $pVal2); return (defined $pVal1 and defined $pVal2 and $pVal1 == $pVal2); } print 'Testing: 1,1 = ',SpecialEqual(1,1),"\n"; print 'Testing: 1,2 = ',SpecialEqual(1,2),"\n"; print 'Testing: 2,1 = ',SpecialEqual(2,1),"\n"; print 'Testing: 2,2 = ',SpecialEqual(2,2),"\n"; print 'Testing: 2,2.5 = ',SpecialEqual(2,2.5),"\n"; print 'Testing: 2.5,2 = ',SpecialEqual(2.5,2),"\n"; print 'Testing: 2.5,2.5 = ',SpecialEqual(2.5,2.5),"\n"; print 'Testing: undef,1 = ',SpecialEqual(undef,1),"\n"; print 'Testing: 1,undef = ',SpecialEqual(1,undef),"\n"; print 'Testing: undef,undef = ',SpecialEqual(undef,undef),"\n";


Maybe I should have read RMGir's reply, yes? *Smiles*

Replies are listed 'Best First'.
Re: Re: comparing two values under 'perl -w'
by kappa (Chaplain) on Apr 02, 2002 at 16:57 UTC
    I like this best of all :)
    I works (good) and is readable (even more good). The one with ternary operator is shorter, thank you demerphq, but is a little too complicated to my taste. I like ?: myself, but not when they're nested. This code will probably be read by different people including perl novices.
      Er, I take minor issue with the term "nested". I too tend to avoid nested ternary ops but I generally think of the above example as "chained" and not nested.

      my $x=$y ? $z ? $t : $u : $v; #nested my $x=!$y ? $v : $z ? $t : $u; #chained
      Oh and I dont really understand why people are so superstitious about ternary ops. Many non developers are even familiar with them as they come up often in excel cell formula if(Condtion,yesresult,noresult). OTOH if you have maintainence issues to consider then whatever minimizes headaches...


      Yves / DeMerphq
      Writing a good benchmark isnt as easy as it might look.

        Oh, that's interesting.
        I like the pattern of 'chained ternary ops'! Thank you! Hm, gotta get used to it :)