2015-06-25 2 views
2

Что касается ниже кода, то как $ one_sub и $ two_sub становятся кодовыми для анонимных подпрограмм в именованном под "sup"? Именованный субон не «возвращает» эти два анонса; или это? (по крайней мере, я не сделал такого заявления).perl anonymous подпрограмма в названной подпрограмме

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) = ⊃ 

Использование Dumper :: Streamer Data :: шоу:

$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]; 
     }; 
+4

[ 'perldoc -f return'] (http://perldoc.perl.org/functions/return.html):«В отсутствие явного 'return', подпрограммы,' eval' или 'do FILE' автоматически возвращает значение последнего оцениваемого выражения." – ThisSuitIsBlackNot

+1

@ThisSuitIsBlackНе должно быть, наверное, ответ. –

+0

Это одна из причин, почему явные возвращения - хорошая вещь :) – Sobrique

ответ

8

Цитирую perlsub:

Если нет return не найден, и если последнее утверждение является выражение, его значение возвращается.

($neh, $hen); - выражение. В контексте списка его значение равно 2 анонимным подписчикам.

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