获取“哈希分配中奇数个元素”错误

时间:2013-06-20 06:20:50

标签: perl

运行Perl脚本时出现以下错误

Odd number of elements in hash assignment at GenerateInterchangeFromIntegrationManifest.pl line 197.  
{  
    "Change list" : "0"  
}

这是剧本:

my %labelFieldMap = (IUItemName => convertIuItemName,
                      Changelist => sub {},
                     IUItemLevel => createNormalConvert('iuItemLevel'),
                     ContactPOC => \&convertContacts,
                     Cspec => \&convertCspec,
                     IsNew => createBooleanConvert('isNew'),
                     Submitter => createNormalConvert('submitter'),
                     LabelType => createNormalConvert('type'),
                     Revision => createNestedConvert('component', 'revision'),
                     RevisionName => sub {},
                     ComponentBaseName => createNestedConvert('component', 'baseName'),
                     Version => createNestedConvert('component', 'version'),
                     PLMapping => createNormalConvert('plMapping'),
                     BidMapping => createNormalConvert('bidMapping'),
                     ClientId => createNormalConvert('clientId'),
                     Path => \&convertPath,
                     ExtendedData => \&convertExtendedData);

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

有几个子程序调用分配给散列,可以返回具有偶数个元素的列表(这将使列表总数为奇数,并且还会更改哪些数据是键以及列表中该点的哪些值在,这对你来说可能更糟)。正如Dallaylaen在评论中指出的那样,这可能只是一行返回“无”,return;将在列表上下文中评估为空列表(),即偶数长度为0。问题代码中的所有子例程调用都将在列表上下文中进行评估。

我建议使用一种简单的调试技术:

  • 使用函数调用注释掉所有行,应该删除警告。
  • 然后一次添加几个并重新测试。
  • 当警告重新出现时,您将把问题隔离到几个子程序之一。
  • 重复,直到你知道哪一个。
  • 然后调查该电话,了解如何解决此问题。
相关问题