如何设置必须在Perl脚本停止之前执行的代码?
在这里,如何在perl脚本退出之前运行一段代码我读到了有关END子程序的内容,但它只在脚本正常结束时执行.但是,如果用户通过^ C中止程序,我也希望执行代码.
package JustTesting;
use strict;
use warnings;
sub new {
my $self = {};
bless($self, shift);
END { $self->goodbye() };
return $self;
}
sub goodbye {
print "Goodbye.\n";
}
package main;
my $this = JustTesting->new();
Run Code Online (Sandbox Code Playgroud)
输出:
变量"$ self"不会在./test第10行保持共享.
再见.
显然它可以工作,我可以no
warnings在END块内抑制警告.但我想知道是否有更好的方法来做到这一点.
我尝试使用这样的匿名子:
my $cleanup = sub { $self->goodbye() };
END { $cleanup->() };
Run Code Online (Sandbox Code Playgroud)
然后像这样:
END { sub { $self->goodbye() }->() };
Run Code Online (Sandbox Code Playgroud)
但我总是得到同样的警告.