Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 得到一个;散列赋值中元素的奇数“;错误_Perl - Fatal编程技术网

Perl 得到一个;散列赋值中元素的奇数“;错误

Perl 得到一个;散列赋值中元素的奇数“;错误,perl,Perl,我在运行Perl脚本时遇到以下错误 GenerateInterchangeFromIntegrationManifest.pl第197行哈希赋值中的奇数元素。 { “更改列表”:“0” } 以下是脚本: my %labelFieldMap = (IUItemName => convertIuItemName, Changelist => sub {}, IUItemLevel => cr

我在运行Perl脚本时遇到以下错误

GenerateInterchangeFromIntegrationManifest.pl第197行哈希赋值中的奇数元素。
{  
“更改列表”:“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);

有谁能帮我解决这个问题吗?

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

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

  • 用一个函数调用注释掉所有的行,这将删除警告
  • 然后一次添加几个并重新测试
  • 当警告再次出现时,您将已将问题隔离到少数子例程之一
  • 重复,直到你知道是哪一个
  • 然后调查这个电话,看看你可以如何解决它

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

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

  • 用一个函数调用注释掉所有的行,这将删除警告
  • 然后一次添加几个并重新测试
  • 当警告再次出现时,您将已将问题隔离到少数子例程之一
  • 重复,直到你知道是哪一个
  • 然后调查这个电话,看看你可以如何解决它

也许你需要这个
IUItemName=>\&convertiuiitemname
这可以正常工作。错误在另一个您尚未粘贴到此处的位置。请在出错的部分周围添加行。但是
IUItemName=>convertiuiitemname,
部分不应该这样做。它是一个不带引号的值在散列中有几个子程序调用,它们可能返回具有偶数个元素的列表(这将使列表总体计数为奇数)。我建议使用一种简单的调试技术——用一个函数调用注释掉所有的行,这样可以删除警告。然后一次添加几个并重新测试。当警告再次出现时,您将已将问题隔离到少数子例程之一。重复上述步骤,直到你知道是哪一个,然后调查这个电话,看看你可以如何解决它。@NeilSlater这应该是答案。我想补充一点,如果其中一个函数只是
返回
s在某个点,当调用为
my$foo=bar()时,它将返回
unde
但是
我的%foo=(bar=>bar(),)
中的空列表(分别称为标量和列表上下文)。也许您需要这个
IUItemName=>\&convertiuiitemname
这可以正常工作。错误在另一个您尚未粘贴到此处的位置。请在出错的部分周围添加行。但是
IUItemName=>convertiuiitemname,
部分不应该这样做。它是一个不带引号的值在散列中有几个子程序调用,它们可能返回具有偶数个元素的列表(这将使列表总体计数为奇数)。我建议使用一种简单的调试技术——用一个函数调用注释掉所有的行,这样可以删除警告。然后一次添加几个并重新测试。当警告再次出现时,您将已将问题隔离到少数子例程之一。重复上述步骤,直到你知道是哪一个,然后调查这个电话,看看你可以如何解决它。@NeilSlater这应该是答案。我想补充一点,如果其中一个函数只是
返回
s在某个点,当调用为
my$foo=bar()时,它将返回
unde
但是
my%foo=(bar=>bar(),)
中的空列表(分别称为标量和列表上下文)。您还可以将所有方法返回转换为引用。相反,将数组作为键值传递是没有意义的。您还可以将所有方法返回转换为引用。相反,将数组作为键值传递是没有意义的。