У меня возникла необходимость в передаче объекта Perl/Tk в качестве параметра процедуры, для дальнейшего создания его дочерних объектов (элементов интерфейса) внутри этой процедуры.
Сначала напишем простой код:
#! /usr/bin/perlСначала напишем простой код:
use 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.
Комментариев нет:
Отправить комментарий