Вы можете запустить свой Perl-скрипт через Tk::ExecuteCommand
use Tk;
use Tk::ExecuteCommand;
$ec = tkinit()->ExecuteCommand(
-command => '',
-entryWidth => 50,
-height => 10,
-label => '',
-text => 'Execute',
)->pack;
$ec->configure(-command => 'perl ./my_other_perl_script.pl');
$ec->execute_command;
$ec->update;
В общем, вам нужно выполнить какой-то IPC для запуска пакета и обновления графического интерфейса Tk.Потому что дескрипторы ввода-вывода могут создавать события в Tk.Tk::ExecuteCommand
отчасти скрывает сложность МПК.
В противном случае вы можете разработать собственную схему IPC.Вероятно (грубо говоря) события канала, разветвления и настройки канала как событие ввода-вывода, и важнейшие команды для создания журнала только для чтения:
$text->configure( -state => 'normal' );
$text->insert( end => $text_I_just_read_from_the_pipe );
$text->configure( -state => 'disabled' );