in reply to Re^6: Warnings on unused variables?
in thread Warnings on unused variables?

Because it is easier for maintenance to name them from the beggining.

In my opinion, it's easier for maintenance to not have positional arguments if you have more than two arguments.

I would write that as:

sub whatever { my %argument = @_; my $data = $argument{data}; my $p = $argument{p}; my $r = $argument{r}; my $dbh = $argument{dbh}; ... } whatever dbh => $dbh, data => "...", p => "...", r => "...";
Except that I wouldn't use names like 'p', 'r', and certainly not 'data'.