Char-Replace
view release on metacpan or search on metacpan
t/coderef-map.t view on Meta::CPAN
note "code ref that dies propagates error cleanly";
my @map = fresh_map();
$map[ ord('a') ] = sub { die "callback error" };
my $died = !eval { Char::Replace::replace( "abc", \@map ); 1 };
ok $died, q[die in callback propagates to caller];
like $@, qr/callback error/, q[original error message preserved];
}
{
note "code ref die does not leak memory (no crash after many iterations)";
my @map = fresh_map();
$map[ ord('a') ] = sub { die "leak test" };
for (1..1000) {
eval { Char::Replace::replace( "abc", \@map ) };
}
pass q[1000 die-in-callback iterations: no crash or corruption];
}
done_testing;
( run in 0.565 second using v1.01-cache-2.11-cpan-96521ef73a4 )