in reply to help using packForget()

As an afterthought, to what I said earlier, and the fact that you said this was for a gigantic gui, you might want to worry about memory gains from creating and packForgeting a $mw. PackForget will not destroy the widgets, and repeated use will cause a memory increase the way you have it now.

Some options are to make the $boom a global, and when you call the my_die sub, use $boom over and over, by reconfiguring the buttons and labels. As a matter of fact, if you do it that way, you may not need packForget, just withdraw the $boom and reconfigure the widgets. You only need packForget if you want to repack the widgets in a different order. As an example of a non-leaking reusable popup......

#!/usr/bin/perl use warnings; use strict; use Tk; my $tl; my $mw = MainWindow->new; $mw->title( "MainWindow" ); $mw->Button( -text => "Toplevel", -command => \&do_Toplevel )->pack(); MainLoop; sub do_Toplevel { if ( !Exists( $tl ) ) { $tl = $mw->Toplevel(); $tl->geometry('300x100+100+100'); $tl->title( "Toplevel" ); #put all your widgets here $tl->Button( -text => "Close", -command => sub { $tl->grabRelease; $tl->withdraw } )->pack; } else { $tl->deiconify(); $tl->raise(); $tl->grabGlobal; } } ##############################################################

I'm not really a human, but I play one on earth. Cogito ergo sum a bum