На самом деле у тебя 2 задачи:
1) вернуться в определенное место кода и почистит стек
2) передать данные
Для 1) подойдёт:
last МЕТКА
eval+die
goto МЕТКА

Для 2) подойдёт:
eval+die
Передавать какую-то ссылку через все функции, чтобы положить туда
результат, к примеру $self.
Положить в какую-то глобальную переменную


ср, 18 дек. 2024 г., 12:18 Иван Бессарабов via Moscow-pm <[email protected]>:

> goto — сделает ровно то что хочется.
>
> Все зависит от задачи, но вообще, обычно, считается что goto — это плохо.
> Так что может быть, нужно как-то пересмотреть условие задачи и переделать
> код так чтобы не было необходимости в использовании goto.
>
> Пример с goto: https://PerlBanjo.com/95d448df64
>
>
> On Wed, Dec 18, 2024 at 8:03 AM Alessandro Gorohovski via Moscow-pm <
> [email protected]> wrote:
>
>> Уважаемое сообщество, приветствую!
>>
>> Подскажите, может кто-нибудь знает,
>> способ глобально выйти (сделать return) из вложенных подпрограмм
>> (функций) по метке,
>> т.е. аналогично *last* для управления циклом
>> ?
>>
>> Например:
>>
>> _Metka:
>> &aaa( @args );
>>
>> $@ && say $@;
>> exit;
>> #--------------------
>> sub aaa {
>> # ...
>>    &bbb;
>> # ...
>> }
>> #--------------------
>> sub bbb {
>> # ...
>>    &ccc;
>> # ...
>> }
>> #--------------------
>> sub ccc {
>> # ...
>>    &ccc;
>> # ...
>>    $@ = $results;
>>    return _Metka;
>> }
>>
>> --
>> Moscow.pm mailing list
>> [email protected] | http://moscow.pm.org
>>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить