#!perl use strict; use warnings; use feature qw(:5.12); use Win32::GUI qw(); use Win32::GUI::Constants qw(CW_USEDEFAULT); my $win = Win32::GUI::Window->new( -name => 'win', -text => 'Destroy Window', -size => [ 320, 240 ], -left => CW_USEDEFAULT, ); my $label = $win->AddLabel( -name => 'label', -text => 'Label', -size => [ 80, 25 ], -pos => [ 10, 10 ], ); my $button = $win->AddButton( -name => 'button', -text => 'Remove', -size => [ 80, 25 ], -pos => [ 10, 50 ], -onClick => sub { state $show = 1; if($show){ undef $label; # remove stored reference to control delete $win->{label}; # remove reference stored in parent window $show = 0; } else { $label = $win->AddLabel( # recreate control -name => 'label', -text => 'Label', -size => [ 80, 25 ], -pos => [ 10, 10 ], ); $show = 1; } return 1; }, ); $win->Show(); Win32::GUI::Dialog(); __END__