Perl5 と奇妙な overload の冒険
このコード、perl5.8.1 だと不思議な挙動をします(たぶん 5.8.5 以下で変な挙動をする)。
use strict;
use warnings;
use Test::More tests => 2;
{
package Foo;
use overload
'""' => sub { ${ $_[0] } },
'+0' => sub { ${ $_[0] } },
fallback => 1;
sub new {
my $class = shift;
my $value = shift;
bless \$value, $class;
}
}
my $x = Foo->new(100);
is($x > Foo->new(1) ? 100 : 1, 100);
is(Foo->new(100) > Foo->new(1) ? 100 : 1, 100);
Published: 2010-03-08(Mon) 13:48