use warnings; use strict; use Test::More tests=>2; use Test::NoWarnings; use Test::Warn; sub Foo::get_member_id_by_name { warn "foo than bar" }; my $obj = bless {}, 'Foo'; warning_like ( sub { $obj->get_member_id_by_name('smith'); }, qr/than/, 'warns when more than one name returned' ); __END__ 1..2 ok 1 - warns when more than one name returned ok 2 - no warnings #### sub warns (&) { my $sub = shift; my @warns; { local $SIG{__WARN__} = sub { push @warns, shift }; $sub->() } return wantarray ? @warns : scalar @warns; } print "<$_>\n" for warns { warn "Hello"; warn "World" } __END__