0

运行 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);

谁能帮我解决这个问题?

4

1 回答 1

5

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

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

  • 用函数调用注释掉所有行,这应该删除警告。
  • 然后一次添加几个并重新测试。
  • 当警告再次出现时,您将把问题隔离到几个子例程之一。
  • 重复直到你知道是哪一个。
  • 然后调查该调用以查看如何修复它。
于 2013-06-20T08:11:40.583 回答