File: 25_alias_weakref.t

package info (click to toggle)
libdata-alias-perl 1.28-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 368 kB
  • sloc: perl: 1,976; makefile: 3
file content (34 lines) | stat: -rw-r--r-- 543 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl -w

use strict;
use warnings qw( FATAL all NONFATAL void );
use lib 'lib';
use Test::More tests => 4;

use Data::Alias;

SKIP: {
	skip "Scalar::Util not installed", 4
		unless eval "use Scalar::Util qw/ weaken /; 42";

	my $x = {};
	my $y = {};
	my $keepalive = $x;
	weaken($x);
	alias $x->{foo} = $y->{foo};
	$x->{foo} = 42;
	undef $keepalive;
	is $x, undef;
	is $y->{foo}, 42;

	$x = [];
	$keepalive = $x;
	weaken($x);
	alias push @$x, $y;
	$y = 42;
	is "@$keepalive", 42;
	undef $keepalive;
	is $x, undef;
}

# vim: ft=perl