Test::Trap! Shameless plug, yes indeed. But it does what you want:
$ cat trap_exit.t
use warnings;
use strict;
use Test::More tests => 3;
use Test::Trap;
ok(require('test_exit.pl'), 'loaded');
trap{ killer() };
$trap->die_like( qr/hasta la vista baby/, q{Expected killer to die} );
trap{ exiter() };
$trap->exit_is( 42, q{Expected exiter to exit} );
$ prove -v test_exit.t
test_exit....1..3
ok 1 - loaded
ok 2 - Expected killer to die
ok 3 - Expected exiter to exit
ok
All tests successful.
Files=1, Tests=3, 0 wallclock secs ( 0.09 cusr + 0.00 csys = 0.09 C
+PU)
print "Just another Perl ${\(trickster and hacker)},"
The Sidhekin proves Sidhe did it!