I'm not sure if there's a CPAN module for 'does', but your first cut will allow the foo() method to continue if at least one method is available, which may not be what you want. Also in scalar context an array ref will be returned, which will always evaluate to true, so even if no @methods pass the test, foo() will continue.