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

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

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

т.к. do_this ничего не возвращает, как он все еще печатает j?Почему функция Perl возвращает значение?

+0

Надеюсь, вы находитесь в другом месте вашего кода, и мы просто не видим его в фрагменте, но вы должны включить 'use strict; используйте предупреждения: ' – Daenyth

ответ

25

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

В отсутствии явного возврата, подпрограмма, Eval, или же FILE автоматически возвращает значение последнего вычисленного выражения

+0

также' делать BLOCK' и любую другую структуру блока, когда она находится в не-void контексте –

4

Всего Perl возврат 5 Подпрограммы последнее значение выполненного последнего оператора.

+0

... если они не попадают в оператор 'return' – friedo

+0

@friedo: если они попали в оператор' return' , каково последнее утверждение? : P –

+2

Ну, тем менее странный способ сказать, что это результат последнего оцененного выражения. Это может быть не последнее значение, поскольку подпрограммы могут возвращать несколько элементов. –

Смежные вопросы