我有一个问题,但找不到我需要的答案。我有一个可处理多个文件的 perl 脚本。在脚本的开头,给定的文件被重命名并备份,在脚本的结尾,它被重命名回来,所以原始文件根本没有被触及。 但是如果脚本在运行时死掉了怎么办?如果文件丢失或者用户通过键盘上的“cmd + c”退出脚本?是否有一种方法可以定义一个在脚本终止或用户希望脚本终止时始终执行的函数?我从 perl 中找到了“END”块,但它认为这不适用于我的情况。
谢谢!
-亚历克斯
END 块适用于
exit
和 die
。但是,如果不适用于信号,则必须创建一个信号处理程序。将其设置为空子会将控制权传递给 END 块:
local $SIG{INT} = sub {};
文件丢失通常由 END 块覆盖,而
Ctrl-C
正在生成信号并且必须单独处理,正如 @choroba 所指出的。
对于寻求答案的其他读者,END 块的语法:
END {
command;
command;
…
}