由于 undef 值,我希望输入第二个“if”语句中的块,但日志显示它没有被输入。
sub getcmd{
my $self = $_[0];
if ( $self->_recv == OK ){
push @{$self->{'log'}}, ['NOTICE', "OK"];
return "My command";
}
push @{$self->{'log'}}, ['ERROR', "Did not get OK back"];
return undef;
}
...
if (!($ret = $self->getcmd)){
push @{$self->{'log'}}, ['ERROR', "failed to read after asking for NEXT"];
}
else {
push @{$self->{'log'}}, ['ERROR', "'undef' not detected in next()"];
}
日志文件显示:
[Fri May 8 19:25:56 2009]: ERROR: Did not get OK back
[Fri May 8 19:26:02 2009]: ERROR: 'undef' not detected in next()
任何想法都欣然接受。
编辑:对不起,我已经编辑了代码以显示基本流程。我应该把它校对好一点。
- 我在 getcmd() 中添加了 $ret 来模拟日志记录函数中发生的情况,该函数只打印出 $ret 的当前值,这是一个始终用于捕获返回值的全局变量。
- 我削减了日志消息并错过了额外的“后退”
感谢您的建议和意见。我没有注意到日志时间戳的六秒差异,所以现在我怀疑您对执行顺序与我最初预期的不同是正确的。
我回去再看看。猜猜这就是你在一天 13 个小时试图完成一个“必须在星期一上线”项目之后查看其他人的“平均”Perl 时得到的结果!
我没有编写代码,只是继承了它。该代码是由几个认为他们“不需要警告或严格”的人编写的。
想象一下 800 行 Perl 和许多“if”,但没有 else 语句!根本没有防御性编码!8-O
再次感谢您的帮助。
干杯,