Closed p5pRT closed 20 years ago
I overload boolean conversion. '!' and 'unless' don't work.
#!/usr/bin/perl -wl
package Boolean;
use overload ( bool => sub { ${+shift} }\, fallback => 1\, );
sub new { my ($class\, $num) = @_; $num ||= 0; bless \$num\, $class; }
package main;
for (1\, 0) { print "NUM: $_\n";
my $i = new Boolean $_;
print $i ? 1 : 0; print ! $i ? 1 : 0;
if ($i) { print 1; } else { print 0; }
unless ($i) { print 1; } else { print 0; }
print ''; }
__END__ NUM: 1
1 0 1 0
NUM: 0
0 0 0 0
Migrated from rt.perl.org#966 (status was 'resolved')
Searchable as RT966$