+ JJ Merelo <[email protected]>:

> Pasando profiler a algunos programillas me he dado cuenta que return
> $foo tarda bastante tiempo; el problema es que se mete en la pila el
> resultado de la última sentencia de una subrutina hagas lo que hagas,
> con lo que consume bastante tiempo. No sé si pasarlo a un closure
> merecerá la pena, pero en todo caso, ¿hay alguna forma de evitar el
> return en una subrutina? ¿Quizás definiendo prototipos?

En vez de devolver el valor $foo con return por que no lo devuelves
por referencia en uno de los parámetros de la llamada?

use 5.010;
my $resultado = 0;
func(\$resultado);
say $resultado;

sub func {
    my ($res_ref) = @_;

    $$res_ref = 42;    # cálculo de $foo;

    return;
}

-- 
Alex Muntada <[email protected]>
http://alexm.org/
_______________________________________________
Madrid-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/madrid-pm

Responder a