https://metacpan.org/module/Function::Parameters
There are other modules out there like this, including one that bakes it into Moose methods. This also highlights a cool Perl feature: hack able syntax.
There are lots of other modules
https://metacpan.org/module/Method::Signatures https://metacpan.org/module/MooseX::Method::Signatures https://metacpan.org/module/Method::Signatures::Simple
and many more. In this case, there might be too many ways to do it.
I don't know what might have Larry thought while designing this. But I can imagine only of one thing.
While writing Perl one liners it might become difficult to fit in the parameters in the usual C based function implementation syntax, in such cases this might turn out useful.
Let us not forget sysadmins use Perl a lot on the command line.
There's a few Perl programmers at work who end up using just a bunch of global variables instead of doing pass by reference or returning values from subs.
sub do_something { # modify %my_global_hash }
It's just strange working with Perl after working in more OO languages. But, like you said, Perl adapts to your style. I want it more like other languages I've written in, whereas the people I work with don't.
Getopts::Long is amazing for parsing command line, and I don't know how I would work without being able to do the inline if and unless statements.