#!/usr/bin/perl use strict; use warnings; use Tk; use Tk::Text; my $top = MainWindow->new; my $text = $top->Text->pack(-expand => 'yes', -fill => 'both'); my $menu = $text->menu; add_my_menu_item($menu, 2, 'bogus', $text); $top->configure(-menu => $menu); MainLoop; sub add_my_menu_item{ my ($menu, $index, $name, $widget) = @_; $menu->insert($index, 'cascade', -label => $name, -menu => $menu->entrycget($index, '-menu')->Menu( -tearoff => 0 )); my $entry = $menu->entrycget($index, '-menu'); map ( $entry->command ( -label => $_, -command => [sub {$widget->insert('insert', $_[0])}, $_], ) ,(qw/1 2 3 4 5/) ); }