$ ./1.term.pl
Sleeping 1 seconds ...
Print finishing normally (sleep 1 completed)
[1]+ Done gedit 1.term.pl
$ ./1.term.pl
Sleeping 1 seconds ...
Print finishing normally (sleep 1 completed)
$ ./1.term.pl
Sleeping 3 seconds ...
^C
$ cat cleanup_handler_log.txt
DESTROY() called. Cleaning up...
DESTROY() called. Cleaning up...
####
$ cat cleanup_handler_log.txt
DESTROY() called. Cleaning up...
DESTROY() called. Cleaning up...
DESTROY() called. Cleaning up...
$
####
$ cat 1.term.pl
#!/usr/bin/perl -w
use 5.011;
use FindBin;
use File::Spec;
my $log_fn = File::Spec->catfile($FindBin::Bin, "cleanup_handler_log.txt");
open my $LOG, '>>', $log_fn or die "Failed to open log '$log_fn' for appending ($!)\n";
binmode $LOG;
$LOG->autoflush(1); # disable buffering
package Blah;{
sub new {
return bless {}, shift;
}
sub DESTROY {
print $LOG "DESTROY() called. Cleaning up...\r\n";
}
}
my $obj = Blah->new;
my $sleep_time = 3;
print "Sleeping $sleep_time seconds ...\n";
sleep $sleep_time;
print "Print finishing normally (sleep $sleep_time completed)\n";
$