#!/usr/bin/env perl use strict; use warnings; use Tk; { my $mw = MainWindow::->new(); $mw->Button( -text => 'Transient message', -command => sub { out_msg(\$mw, 'Message ...', 2_000) }, )->pack(); $mw->Button( -text => 'No backup', -command => sub { out_msg(\$mw, 'Exiting ...', 2_000, 1) }, )->pack(); } sub out_msg { my ($mw_ref, $msg, $delay, $exit) = @_; my $tl = $$mw_ref->Toplevel(); $tl->Label(-textvariable => \$msg)->pack(); my $handle_msg = $exit ? sub { exit } : sub { $tl->destroy }; $tl->after($delay, $handle_msg); } MainLoop;