use Sub::Installer; use Test::More 'no_plan'; use warnings; my $ok = q{ ok $_[0], $_[1] }; my $is = q{ is $_[0], $_[1], $_[2] }; my $sub_ref = main->install_sub({ ok1 => $ok, ok2 => $is }); ok1(1 => 'first installed sub runs'); ok2(2,2 => 'second installed sub runs'); $SIG{__WARN__} = sub { ok 0 => "warned unexpected: @_" if $_[0] =~ /redefined/ }; $sub_ref = main->reinstall_sub({ ok1 => $is, ok2 => $ok }); ok1(2,2 => 'first reinstalled sub runs'); ok2(2 => 'second reinstalled sub runs'); ok !eval{$sub_ref = main->reinstall_sub({ ok1 => $is.'%^&%#@^&#%' }) } => 'bad code failed as expected'; like $@, qr/Can't install invalid code/ => 'failed with correct message';