匿名哈希中的奇数

时间:2017-06-10 19:17:30

标签: perl

任何人都可以解释为什么我的程序中出现此警告。到目前为止,我对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}}; 谢谢。

1 个答案:

答案 0 :(得分:1)

您正在致电performanta{$clone->{_secventa}}。当perl试图解析它时,它会得到performanta( { $clone->{_secventa} } )

  • 致电performanta sub
  • 它获得一个参数
  • 一个参数是匿名哈希引用,用{ ... }
  • 初始化
  • 初始化散列引用的列表只有一个项目$clone->{_secventa}

我并不完全清楚你的意图,但是只要你告诉它不是你打算告诉它的话,它就完全清楚了警告。