【问题标题】:Odd number in anonymous hash匿名哈希中的奇数
【发布时间】:2017-06-10 19:17:30
【问题描述】:

任何人都可以解释为什么我的程序中会出现此警告。到目前为止,我对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-&gt;{_performanta} = performanta{$clone-&gt;{_secventa}};
谢谢。

【问题讨论】:

  • 看来你已经习惯了 Lua 了?

标签: perl


【解决方案1】:

你打电话给performanta{$clone-&gt;{_secventa}}。当 perl 试图解析这个时,它会得到 performanta( { $clone-&gt;{_secventa} } ) 这是:

  • 调用performanta sub
  • 得到一个参数
  • 那个参数是一个匿名哈希引用,初始化为{ ... }
  • 初始化哈希引用的列表只有一项,$clone-&gt;{_secventa}

我并不完全清楚你的意图是什么,但 perl 完全清楚的是,无论你告诉它什么都不会是你想要告诉它的,因此有用的警告。

【讨论】:

  • 是的,这就是问题所在。我终于想通了。
猜你喜欢
  • 2012-07-20
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2015-12-08
  • 2017-02-09
相关资源
最近更新 更多