LINUX.ORG.RU

Perl. Объясните код.

 


0

2

Всем привет!

Я в perl новичек. Столкнулся с одним кодом, назначение которого точно не знаю. А в гугле забанили, да. Вопрос к достопочтенной публики: «Как работает следующий фрагмент кода»?

sub my_func {
    take {
        my $a = 1;
    } some {
        my $a = 2;
    } sub {
        my $a = 3;    
    };
    
    return $a;
};

main();

Я подозреваю, что это что-то вроде try/catch, но точно - хз. Что за take, что за some, что за анонимный sub? Что за паттрен? Где лучше использовать?



Последнее исправление: djnoob (всего исправлений: 1)

Что за take, что за some

Это функции, принимающие анонимный блок кода как аргумент, они не являются built-in, частью Perl не являются.

Что за паттрен?

sub x (&) {
    my $y = shift;
    say $y->();
};

x { 42 };

Где лучше использовать?

В либах которые пишешь, там где нужен синтаксический сахар. Тот же Try::Tiny посмотри в качестве примера.

outtaspace ★★★
()

Вдобавок, perldoc B::Deparse.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.