Brian Duggan


Object::Boolean - Represent boolean values as objects


    use Object::Boolean;
    use Object::Boolean qw/True False/; # ..or export some constants
    use Object::Boolean                 # ..or rename those constants
        True => { -as => 'TRUE' },   
        False => { -as => 'FALSE' };

    # Create a "false" object by calling new() with a Perl 
    # false value or the word 'false'.
    my $f = Object::Boolean->new(0);
    my $f = Object::Boolean->new('');
    my $f = Object::Boolean->new(2+2==3);
    my $f = Object::Boolean->new('false');

    # Create a "true" object by calling new() with anything else
    my $t = Object::Boolean->new(1);
    my $t = Object::Boolean->new(2+2==4);
    my $t = Object::Boolean->new('true');
    my $t = Object::Boolean->new('elephant');

    # In boolean context, it behaves like a boolean value.
    if ($f) { print "it's true" }
    print "\$f is false" unless $f;
    print "1+1==2 and it's true" if 1+1==2 && $t;

    # In string context, it becomes "true" or "false"
    print "It was a $f alarm.";
    print "Those are $f teeth.";

    # Boolean negation produces a new boolean object.
    print (!$f)." love is hard to find.";

    # Checking for numeric or string equality with other boolean
    # objects compares them as though they were in a boolean context.
    if ($t!=$f) { print "They are not the same." } # like xor
    if ($t==$t) { print "They are both true or both false." }
    if (Object::Boolean->new(1) eq Object::Boolean->new(2)) {
        # this will be true

    # Comparison to non-boolean objects treats booleans as strings 
    # for string equality or the numbers 0 or 1 for numeric equality
    my $true = Object::Boolean->new('true');
    print "true" if $true eq 'true'; # true
    print 'true' if $true == 1;      # also true
    print 'true' if $true == 27;     # no, not true
    print 'true' if $true eq 'True'; # not true


Package for representing booleans as objects which stringify to true/false and numerify to 0/1. Derived classes can easily stringify/numerify to other values.



Create a new Object::Boolean object.


Object::Boolean::YesNo -- to stringify to 'Yes' and 'No' instead of 'true' and 'false'.


Version 0.02


Brian Duggan, <bduggan at>


Copyright 2008 Brian Duggan, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.