命名子例程

时间:2015-06-25 14:22:54

标签: perl

关于下面的代码,$ one_sub和$ two_sub如何成为命名子“sup”中的匿名子程序的coderef?命名子不是'返回'那两个anon subs;或者是吗? (至少我没有发表这样的声明)。

sub sup {

          my $neh = sub {
                  say "this is 'neh' subroutine"
          };

          my $hen = sub {
                  say "this is 'hen' subroutine"
         };
          ($neh, $hen);
  }

  my ($one_sub, $two_sub) = ⊃

使用Data :: Dumper :: Streamer show:

$CODE1 = sub {
           use warnings;
           use strict;
           no feature;
           use feature ':5.10';
           say q[this is 'neh' subroutine];
         };
$CODE1 = sub {
           use warnings;
           use strict;
           no feature;
           use feature ':5.10';
           say q[this is 'hen' subroutine];
         };

2 个答案:

答案 0 :(得分:8)

引用perlsub

  

如果未找到return且最后一个语句是表达式,则返回其值。

($neh, $hen);是一个表达式。在列表上下文中,其值为2个匿名子。

答案 1 :(得分:2)

是的,它正在回归:

 ($neh, $hen);

在Perl中,返回最新的评估语句。您不需要明确调用:

 return ($neh, $hen);

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