use strict;
use warnings;
use Test::Tester;
use Test::More;
BEGIN
{
require Scalar::Util;
if (grep /^weaken$/, @Scalar::Util::EXPORT_FAIL)
{
plan(skip_all => "no weak refs in this version of perl");
exit(0);
}
}
use t::std;
use Scalar::Util qw( isweak weaken);
sub left
{
my $ref = shift;
eq_deeply($ref, []);
return "left";
}
sub right
{
my $ref = shift;
eq_deeply([], $ref);
return "right";
}
my @subs = (\&left, \&right);
for my $sub (@subs)
{
my $ref = [];
my $weak = $ref;
weaken($weak);
my $side = &$sub($ref, []);
$ref = 1;
ok((! $weak), "$side didn't capture") || diag "weak = $weak";
}