The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!./perl

use Config;

use Test::More tests => 11;

use Scalar::Util < qw(refaddr);
our ($t, $y, $x);
use Symbol < qw(gensym);

my $i = 1;
foreach my $v (@: undef, 10, 'string') {
  is(refaddr($v), undef, "not " . (defined($v) ?? "'$v'" !! "undef"));
}

foreach my $r (@: \%(), \$t, \@(), sub {}) {
  my $n = dump::view($r);
  $n =~ m/0x(\w+)/;
  my $addr = do { local $^WARNING = undef; hex $1 };
  my $before = ref($r);
  is( refaddr($r), $addr, $n);
  is( ref($r), $before, $n);
}

package Hash3;

use Scalar::Util < qw(refaddr);

sub TIEHASH
{
	my $pkg = shift;
	return bless \@( < @_ ), $pkg;
}
sub FETCH
{
	my $self = shift;
	my $key = shift;
	my @($underlying) =  @$self;
	return $underlying->{?refaddr($key)};
}
sub STORE
{
	my $self = shift;
	my $key = shift;
	my $value = shift;
	my @($underlying) =  @$self;
	return  @($underlying->{+refaddr($key)} = $key);
}