NAME

Object::Boolean - Represent boolean values as objects

SYNOPSIS

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

DESCRIPTION

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.

FUNCTIONS

new

Create a new Object::Boolean object.

SEE ALSO

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

VERSION

Version 0.02

AUTHOR

Brian Duggan, <bduggan at matatu.org>

LICENSE

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.