Method::Signatures provides two new keywords, func and method, so that you
can write subroutines with signatures instead of having to spell out my
    $self = shift; my($thing) = @_

* func is like sub but takes a signature where the prototype would normally
  go. This takes the place of my($foo, $bar) = @_ and does a whole lot more.

* method is like func but specifically for making methods. It will
  automatically provide the invocant as $self. No more my $self = shift.

Also allows signatures, very similar to Perl 6 signatures.

Also does type checking, understanding all the types that Moose (or Mouse) would
understand.

And it does all this with no source filters.

Homepage:
https://metacpan.org/release/Method-Signatures
