Я предполагаю, что вы смешиваете свои массивы и массивы. У вас есть это:
my $listbox; $listbox = $win1->add(
'list',
'Listbox',
-values => @marray,
-lables => $lhash,
-onchange => sub { exit($_[0]->get)}
);
Обратите внимание на -values => @marray
? Это должно быть -values => \@marray
. Из тонкой инструкции :
my $listbox = $win->add(
'mylistbox', 'Listbox',
-values => [1, 2, 3],
#...
);
Это смешение напрямую не указывает на ваше сообщение об ошибке, но может достаточно запутать то, что видит $win->add
, и запутать его настолько, чтобы вызвать ошибку, которую вы видите как побочный эффект.