É 'shift' mal para processar parâmetros de sub-rotina Perl?

Estou freqüentemente usandoshift para descompactar os parâmetros da função:

sub my_sub {
    my $self = shift;
    my $params = shift;
    ....
}

No entanto, muitos dos meus colegas estão pregando queshift é realmente mal. Você poderia explicar porque eu deveria preferir

sub my_sub {
    my ($self, $params) = @_;
    ....
}

parashift?

questionAnswers(8)

yourAnswerToTheQuestion