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

use*_*871 0 perl

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

Odd number of elements in hash assignment at GenerateInterchangeFromIntegrationManifest.pl line 197.  
{  
    "Change list" : "0"  
}
Run Code Online (Sandbox Code Playgroud)

这是脚本:

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);
Run Code Online (Sandbox Code Playgroud)

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

Nei*_*ter 5

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

我建议一个简单的调试技术:

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