I use ActiveState 5.22 now. But for grins, I ran your code and it worked with the standard distribution (no extra installations required, the standard Tk was enough albeit with some extra use statements). After adding
use strict; and
use warnings;, I had to add more stuff to get it to run, but run it does. I suspect that there is something that is not apparent in the code that you posted.
use warnings;
use strict;
use Tk;
use Tk::NoteBook;
use Tk::BrowseEntry;
my @product_list = (qw/asdf lijlj/);
my @package_list = (qw/opiu qwerty/);
my $product_st;
my $package_st;
my $mw = MainWindow->new();
$mw -> geometry("1000x400");
my $book = $mw->NoteBook()->pack();
my $title = $mw -> title("Spec Analysis");
$mw ->BrowseEntry(-label => 'Product', -choices=> \@product_list, -var
+iable => \$product_st, -browsecmd =>\&getselect_product, -font => "co
+urier 11 bold" ) ->place(-x=>1,-y=>120);
$mw ->BrowseEntry(-label => 'Package', -choices=> \@package_list, -var
+iable => \$package_st, -browsecmd =>\&getselect_package, -font => "co
+urier 11 bold" ) ->place(-x=>275,-y=>120);
MainLoop;