package boolean; use overload ( '+0' => sub { $_[0][0] }, fallback => 1, ); sub new { bless [ $_[1] ? 1 : 0 ], $_[0] } sub flip { $_[0][0] = 1 - $_[0][0] }