У меня возникла необходимость в передаче объекта Perl/Tk в качестве параметра процедуры, для дальнейшего создания его дочерних объектов (элементов интерфейса) внутри этой процедуры.
Сначала напишем простой код:
#! /usr/bin/perluse strict;use Tk;my $mw=new MainWindow;print $mw;После запуска видим следующий вывод:
MainWindow=HASH(0x9acfcc0)Теперь создадим процедуру создания кнопки для дочернего окна:
sub create_button { my $mw=shift; #Получаем переданный параметр print $mw;}Если теперь вызвать эту процедуру из main::
...create_button($mw); #mw - созданный MainWindow...То получим вывод:
REF(0x9da0340)Т.е. получаем ссылку. Для того, что бы можно было создавать дочерние объекты с переданной в качестве аргумента ссылкой на родительский объект, ее нужно разыменовать.
$$mw->Button(-text=>'button')->pack();Подробнее о ссылках и разыменовании ссылок
perl.