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 => 19;
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 };
35 is( refaddr($r), $addr, $n);
37 my $obj = bless $r, 'FooBar';
38 is( refaddr($r), $addr, "blessed with overload $n");
46 tie my %x, 'Hash3', {};
53 ok(refaddr($xy) == refaddr($y));
54 ok(refaddr($xb) == refaddr($b));
61 use overload '0+' => sub { 10 },
62 '+' => sub { 10 + $_[1] };
66 sub TIEHANDLE { bless {} }
70 warn "$AUTOLOAD called";
71 exit 1; # May be in an eval
76 use Scalar::Util qw(refaddr);
81 return bless [ @_ ], $pkg;
87 my ($underlying) = @$self;
88 return $underlying->{refaddr($key)};
95 my ($underlying) = @$self;
96 return ($underlying->{refaddr($key)} = $key);