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