in reply to Re: Is it possible to store an arthimetric operator in a variable?
in thread Is it possible to store an arthimetric operator in a variable?

You shouldn't use prototypes unless necessary, because of their side-effects. In this case, the prototype isn't even being checked because you're using a reference to the function.

sub test($) { print("Boo!\n"); } my $f = \&test; $f->(); # No error. Prints "Boo!". $f->(1, 2, 3); # No error. Prints "Boo!".

And why bother with ?1:0 and ?0:1 since == already returns a boolean value.

Replies are listed 'Best First'.
Re^3: Is it possible to store an arthimetric operator in a variable?
by Adam (Vicar) on Jul 19, 2005 at 15:18 UTC
    You are correct that the code isn't using the prototypes or requires the 1:0. I used them both, however, to be very clear to our anonymous reader what it was the code was doing. Also, I used 1:0 because I don't like using undef as a boolean false; it's not relevant here, but I find that 0 as false makes debugging easier which has led to this habit.
      Boolean false isn't undef. Notice the lack of warnings in the following snippet:
      >perl -we "print(1==2)" >
        Sorry, you are right. It's "", which is just as useless in debugging... (it's been so long that I wrote a boolean function where I didn't use 0 that I forgot. Thank you.)