2010-09-24 121 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 2010-09-24 19:15:00

回答

4

所有Perl 5级中的子例程返回的 最后一个表达式的值最后执行的语句的最后一个值。

+0

...假设他们没有命中'return'语句 – friedo 2010-09-24 19:10:41

+0

@friedo:如果他们击中'return'语句,最后执行的声明是什么? :P – 2010-09-24 19:21:57

+2

好吧,说这是最后评估表达式的结果的方式不那么奇怪。这可能不是“最后的值”,因为子程序可以返回多个项目。 – 2010-09-24 19:33:26