On Wed, Sep 14, 2005 at 11:49:56AM +0400, Vitaly Lipatov wrote: > Может кто-нибудь подскажет - > в начале программы такие строки: > > #!/usr/bin/perl > use Gtk2 -init; > > При поиске зависимостей в конце сборки пакета идёт попытка > инициализации Gtk2 с соответственно неудачным обращением к > $DISPLAY. Вопрос - кто виноват? > а) программа (возможно надо просто переписать инициализацию) > б) поиск зависимостей > До выяснения автопоиск я отключил :( Программа. Поиск зависимостей не виноват, так как поиск зависимостей в смысле исполнения кода эквивалентен syntax check. $ perl -h |grep -e -c -c check syntax only (runs BEGIN and CHECK blocks) $ use Gtk2 -init; в точности эквивалентно BEGIN { require Gtk2; Gtk2::->import(-init); } (см. perldoc -f use) То есть если сделать 'perl -c ПРОГРАММА' то будет такое же неудачное обращение к $DISPLAY, как и при поиске зависимостей. Исполнять прикладной код в BEGIN -- по-моему, очень плохая идея. Код в BEGIN нужен только для импорта прототипов, перегрузки операторов и загрузки лексических хинтов $^H (типа use strict). Лучше вставить Gtk2->init в место фактической инициализации гуя у программы, или же, если нет желания разбираться, где находится это скорбное место, написать use Gtk2; INIT { Gtk2->init; }.