The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
$|=1;
print "1..8\n";

use Coro::Specific;

# first test without coro

print "ok 1\n";

my $s1 = new Coro::Specific;
my $s2 = new Coro::Specific;

$$s1 = 5;
$$s2 = $$s1+5;

print (($$s2 == 10 ? "" : "not "), "ok 2\n");
print (($$s1 == $$s2-5 ? "" : "not "), "ok 3\n");

# now let coro inherit the first task

require Coro;

Coro::async(sub {
   print ((!defined $$s2 ? "" : "not "), "ok 5\n");
   $$s1 = 6;
   $$s2 = $$s1 + 6;
   $$s2++;
   Coro::cede();
   print (($$s2 == 13 ? "" : "not "), "ok 7\n");
});

print (($$s2 == 10 ? "" : "not "), "ok 4\n");
&Coro::cede;
print (($$s2 == 10 ? "" : "not "), "ok 6\n");
&Coro::cede;
print (($$s2 == 10 ? "" : "not "), "ok 8\n");