четверг, 12 февраля 2009 г.

Семь драконов, мешаюших жить в гармонии с миром

Алчность, высокомерие, нетерпеливость, упрямство, самоуничижение, склонность к мученичеству и саморазрушению - так зовут этих драконов, по мнению Хосе Стивенса.

четверг, 5 февраля 2009 г.

Perl/Tk. Передача параметров по цепочке процедур.

У меня возникла необходимость в передаче объекта 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.