任何人都可以解释为什么我的程序中出现此警告。到目前为止,我对perl
的了解有限,这应该是正常的。
$clone = $cromozom;
print "-- Clone: $clone->{_secventa} | $clone->{_performanta} \n";
mutatie($clone);
print "-- After mutation: $clone->{_secventa} | $clone->{_performanta} \n";
$clone->{_performanta} = performanta{$clone->{_secventa}};
$counter += 1;
这是performanta
子程序。
sub performanta{
my $sir = shift;
my $distanta = 0;
my $index;
for($index = 0; $index < length($sir); $index +=1){
$distanta += abs(ord(substr($sir, $index, 1)) - ord(substr($solutieOptima, $index, 1)));
}
return $distanta;
}
在此行Odd number of elements in anonymous hash
说$clone->{_performanta} = performanta{$clone->{_secventa}};
谢谢。
答案 0 :(得分:1)
您正在致电performanta{$clone->{_secventa}}
。当perl试图解析它时,它会得到performanta( { $clone->{_secventa} } )
:
{ ... }
$clone->{_secventa}
。我并不完全清楚你的意图,但是只要你告诉它不是你打算告诉它的话,它就完全清楚了警告。