The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
BEGIN {
    $^W = 1;
    $| = 1;
    $SIG{INT} = sub { die };
    print "1..6\n";
}

use strict;
use Carp;
use IPC::Shareable;

my $t  = 1;
my $ok = 1;


{
    package Dummy;
    
    sub new {
	my $d = {
	    _first  => undef,
	    _second => undef,
	};
	return bless $d => shift;
    }

    sub first {
	my $self = shift;
	$self->{_first} = shift if @_;
	return $self->{_first};
    }

    sub second {
	my $self = shift;
	$self->{_second} = shift if @_;
	return $self->{_second};
    }
}

my $d;
tie $d, 'IPC::Shareable', { destroy => 'yes' } or
    undef $ok;
print $ok ? "ok $t\n" : "not ok $t\n";

++$t;
$d = Dummy->new or undef $ok;
$ok = (ref $d eq 'Dummy');
print $ok ? "ok $t\n" : "not ok $t\n";

++$t;
$d->first('first');
$ok = ($d->first eq 'first');
print $ok ? "ok $t\n" : "not ok $t\n";

++$t;
$d->second('second');
$ok = ($d->second eq 'second');
print $ok ? "ok $t\n" : "not ok $t\n";

$d->first('foo');
$d->second('bar');

++$t;
$ok = ($d->first eq 'foo');
print $ok ? "ok $t\n" : "not ok $t\n";

++$t;
$ok = ($d->second eq 'bar');
print $ok ? "ok $t\n" : "not ok $t\n";

# --- Done!
exit;