Я пытаюсь передать аргументы в подпрограмму perl, которая обрабатывает событие wxPerl EVT_BUTTON. Я понимаю, что когда я использую:
EVT_BUTTON($frame, $button, \&onClick);
У меня будет доступ к $ frame и $ button и его функциям в onClick
, Тем не менее, я пытаюсь заставить подпрограмму читать дополнительные аргументы, в основном значение / статус различных других Wx::CheckBox
ценности.
Единственный способ увидеть эту работу — использовать глобальные переменные и получить onClick
читать их, но я хочу использовать повторно onClick
где-то еще, и использование глобальных переменных — мой наименее любимый вариант.
Я пробовал разные вещи, которые потерпели неудачу, например:
EVT_BUTTON($frame, $button, \&onClick(arg1,arg2));
Я думаю, что решение заключается в понимании работы Perl-ссылок, когда мы проходим \&onClick
с \&
индикатор спереди. Но мне не хватает знаний в этом аспекте Perl …
Любая помощь приветствуется
Попробуй это,
EVT_BUTTON($frame, $button, sub{ onClick($arg1,$arg2) });
он дает ссылку на подпрограмму anon, которая вызывает onClick
sub, и это эквивалентно:
my $subref = sub{ onClick($arg1,$arg2) };
EVT_BUTTON($frame, $button, $subref);