2010-09-24 20 views
6
$hi = do_this('asdf'); 

    sub do_this 
    { 
     $blob{'f'} = { 
      'k' => 'j' 
     }; 
    } 

    print $hi->{'k'}; 
    # prints j 

desde do_this no devuelve nada, ¿cómo se sigue imprimiendo, j?¿Por qué esta función Perl devuelve un valor?

+0

Esperemos que esté en otro lugar de su código y simplemente no lo vemos en el fragmento, pero debe incluir 'use strict; use warnings; ' – Daenyth

Respuesta

25

http://perldoc.perl.org/functions/return.html

En ausencia de una declaración explícita, una subrutina, eval, o que PRESENTAR devuelve automáticamente el valor de la última expresión evaluada

+0

también' do BLOCK' y cualquier otra estructura de bloque cuando se encuentre en el contexto no válido –

4

Todo Perl 5 subrutinas de retorno el último valor de la última instrucción ejecutada.

+0

... suponiendo que no marquen una declaración 'return' – friedo

+0

@friedo: Si presionan una declaración' return' , ¿cuál es la última instrucción ejecutada? : P –

+2

Bueno, la forma menos extraña de decir que es el resultado de la última expresión evaluada. Ese podría no ser el "último valor" de las subrutinas ya que puede devolver varios elementos. –

Cuestiones relacionadas