package TrueFalse; use overload ( '+0' => \&num, '""' => \&num, bool => \&bool, fallback => 1, ); require Exporter; @ISA = qw( Exporter ); @EXPORT = qw( boolean true false ); use constant false => 0; use constant true => 1; sub new { bless [ @_[1,2] ], $_[0] } sub bool { $_[0][1] } sub num { $_[0][0] } sub boolean { TrueFalse->new(@_) } 1;