Я пытаюсь заменить проблемный и длинный фрагмент кода в Perl на что-то вроде этого:
my $disp = {
option1 => sub { if(true){$disp->{option2}->();}},
option2 => sub { print "opt 2\n"},
option3 => sub { print "opt 3\n"},
default => sub { print "default\n" },
};
$disp->{($disp->{$option})?$option:'default'}->(@args);
Моя проблема возникает, когда мне нужно выполнить, например, option2
, когда выполнение находится внутри option1
, но я не могу получить доступ к $disp
в $disp
и $self
нет, идеи?