André, Faz tempo que não brinco com Perl, mas se a memória não falha, existiriam dois motivos legítimos para utilizar um parâmetro por referência (que é o que o \@_ representa, uma referência para o @_):
1. Modificar os valores originais, já que o comportamento padrão de Perl é passagem por valor e não por referência, ou 2. Evitar a cópia dos valores dos parâmetros (nesse caso seria mais uma otimização do que uma necessidade) Como dizem os americanos, I might be putting my foot in my mouth, mas acho que seria isso. Para mais detalhes sobre o uso de referências em Perl, 'perldoc perlref'. []'s 2012/12/3 Andre Carneiro <[email protected]> > Boa noite! > > > Estou fazendo uma pesquisa sobre validação de parâmetros em métodos, para > módulos que utilizam Moose. Encontrei a seguinte solução abaixo: > > > > > http://search.cpan.org/~drolsky/MooseX-Params-Validate-0.16/lib/MooseX/Params/Validate.pm > > > > No entanto, tem um detalhe que eu não compreendi. Porque eu preciso passar > \@_ para o método 'validated_list' ? > > Dei uma olhada no código, e vi que ele utiliza o primeiro parâmetro que é > chamado de '$args' dentro do método e existe um algoritmo que faz uma série > de verificações nessa variável e depois envia para validate_with, através > do módulo Params::Validate. Lá descobri que 'validate_with' é um 'símbolo' > que é interpretado como uma sub por um outro método, enfim... Tem alguém > por aqui capaz de me ajudar a entender esta "bagunça" e, principalmente, > porque do \@_ ?? > > > OBS: Antes de qualquer troll me interpretar mal, repare que coloquei > 'bagunça' entre aspas, o que significa que não acho que isso realmente seja > uma bagunça. Por favor, evitem comentários inúteis em cima disso! Já me > considero velho e sem saco pra flames... ;-) > > > Obrigado! > > > > > -- > André Garcia Carneiro > Software Engineer > (11)982907780 > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” - Edsger Dijkstra
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
