我正在调试一个长时间运行的Perl脚本出现的奇怪问题。
问题是当使用
我没有自己定义任何错误处理程序,因此我认为
以下是脚本和所使用模块的基本结构:
这种行为的解释是什么?使用的模块中是否有已知设置错误处理程序的模块可以解释脚本在
问题是当使用
die()
时,脚本不像预期的那样退出。相反,脚本会一直挂起而没有返回结果。我没有自己定义任何错误处理程序,因此我认为
die()
应该导致脚本立即终止。以下是脚本和所使用模块的基本结构:
#!/usr/bin/perl
use strict;
use utf8;
use warnings;
use DBI; # with MySQL driver ("dbi:mysql:database=...")
use Geo::IP;
use POSIX;
use URI::Escape;
open(COMMAND, 'command_line |');
while (<COMMAND>) {
#
# .. stuff that can go wrong ..
#
die("I'm expecting the script to terminate here. It doesn't.") if ($gone_wrong);
}
close(COMMAND);
这种行为的解释是什么?使用的模块中是否有已知设置错误处理程序的模块可以解释脚本在
die()
上挂起的情况?
die()
调用之前添加一个调试行:warn "DIE = $SIG{__DIE__}"
,以查看此时是否存在 die 处理程序。 - Jonathan Halldie
消息?你的问题并没有表达得很清楚。如果没有,将warn
添加在其前面可以显示你是否真正到达了die
。如果这显而易见,那么请原谅! - plusplus