[SP-pm] Golf, mais complicado...
Eden Cardim
edencardim em gmail.com
Quarta Maio 9 11:30:17 PDT 2007
On 5/9/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> Gente, eu estou tentando receber dois parâmetros via name-value
> syntax, transformar isso num hash e retornar apenas o que interessa.
> Acabei escrevendo isso:
>
> package Class;
> sub new {
> my $class = shift;
> ( $driver, $options ) = do{ my %args = @_; @args{qw/Driver
> DriverOptions/}; };
> }
Não vejo nenhum motivo pra usar do{} a não ser evitar a poluição do
escopo de new(). Fora isso, acho q a melhor maneira de fazer é essa
mesmo. Eu iria um pouco mais longe, verificando os parâmetros, usando
um módulo específico, ou implementando algo assim:
sub new {
my $class = shift;
my($driver, $options);
do {
my %args = @_;
my %err;
$driver = delete $args{Driver};
confess "Driver is required..." unless defined $driver;
# etc...
$options = delete $args{DriverOptions};
# etc...
if(%args) {
warn 'unknown options: ' . join ', ', sort keys %args;
}
}
}
typos em parâmetros para funções sem verificação já me deram muita dor
de cabeça no passado... :P
--
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
Mais detalhes sobre a lista de discussão SaoPaulo-pm