7 require Config; import Config;
8 keys %Config; # Silence warning
9 if ($Config{extensions} !~ /\bList\/Util\b/) {
10 print "1..0 # Skip: List::Util was not built\n";
17 use Test::More tests => 32;
19 use Scalar::Util qw(refaddr);
20 use vars qw($t $y $x *F $v $r);
21 use Symbol qw(gensym);
23 # Ensure we do not trigger and tied methods
27 foreach $v (undef, 10, 'string') {
28 is(refaddr($v), undef, "not " . (defined($v) ? "'$v'" : "undef"));
31 foreach $r ({}, \$t, [], \*F, sub {}) {
34 my $addr = do { local $^W; hex $1 };
36 is( refaddr($r), $addr, $n);
37 is( ref($r), $before, $n);
39 my $obj = bless $r, 'FooBar';
40 is( refaddr($r), $addr, "blessed with overload $n");
41 is( ref($r), 'FooBar', $n);
49 tie my %x, 'Hash3', {};
56 ok(refaddr($xy) == refaddr($y));
57 ok(refaddr($xb) == refaddr($b));
62 my $z = bless {}, '0';
64 @{"0::ISA"} = qw(FooBar);
69 is(refaddr($z),$r,"foo");
74 use overload '0+' => sub { 10 },
75 '+' => sub { 10 + $_[1] },
80 sub TIEHANDLE { bless {} }
84 warn "$AUTOLOAD called";
85 exit 1; # May be in an eval
90 use Scalar::Util qw(refaddr);
95 return bless [ @_ ], $pkg;
101 my ($underlying) = @$self;
102 return $underlying->{refaddr($key)};
109 my ($underlying) = @$self;
110 return ($underlying->{refaddr($key)} = $key);