in reply to Modal Tk Toplevel/Passing a MainWindow

1. You could:

2. Have a look at Tk::Callbacks. In your case,  -command => [\&do_toplevel,$mw] ) should work. ( You could then use shift() as you mentioned, to get at $mw )