Я получаю странное предупреждение против некоторого кода Perl, и я надеюсь, что SO-brain может помочь.
Речь идет о коде:
sub add_observation {
my $self = shift;
my $observation = shift;
my $result = $observation->get_datum_result($self->{datum_name});
if(!(defined $result)) {
croak("Datum '$self->{datum_name}' not defined for this observation: ". Dumper($observation));
}
$self->{result} |= $result;
my $observation_time = $observation->get_time();
if($self->{result} == 0){
$self->set_start_time($observation_time);
}
if($result != 0) {
$self->set_end_time($observation_time);
$self->{end_threshold} = $observation_time->epoch() + $self->{timeout};
}
elsif($observation_time->epoch() > $self->{end_threshold}) {
$self->{complete} = 1;
}
return $self->{result};
}
Когда я запускаю свой код, я получите следующее предупреждение:
Use of uninitialized value in numeric gt (>) at Performance/BadSpan.pm line 67 (#1)
Строка 67 соответствует строке if ($ result! = 0) {
.
У меня двоякая проблема:
$ result
не определен, когда ему предшествует некоторый защитный код, который гарантирует, что он определен ! =
«оптимизировано» для >
и <
?