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
Perl 为什么我会得到一个;匿名散列中奇数个元素”;警告_Perl_Hash - Fatal编程技术网

Perl 为什么我会得到一个;匿名散列中奇数个元素”;警告

Perl 为什么我会得到一个;匿名散列中奇数个元素”;警告,perl,hash,Perl,Hash,我在perl代码中得到一个警告,不知道为什么 警告: Odd number of elements in anonymous hash at /Users/../Tree.pm line 56. 这给了我一句话: $dic->{$firstLetter}={$letra}; 实施有问题吗 我的意思是,它通过了所有的测试,但它给了我这些错误。。。就像10次总是在同一条线上! 请给我一些建议吧!:) ={$letra}正在创建一个带有键但没有值的hashref,并尝试分配它 您可能只想分配

我在perl代码中得到一个警告,不知道为什么

警告:

Odd number of elements in anonymous hash at /Users/../Tree.pm line 56.
这给了我一句话:

$dic->{$firstLetter}={$letra};
实施有问题吗

我的意思是,它通过了所有的测试,但它给了我这些错误。。。就像10次总是在同一条线上! 请给我一些建议吧!:)


={$letra}
正在创建一个带有键但没有值的hashref,并尝试分配它

您可能只想分配您拥有的标量:

$dic->{$firstLetter} = $letra;
尽管您可能希望:

$dic->{$firstLetter} = { someKey => $letra };


您打开了
警告,这很好。当您在像
{$letra}
这样的表达式中使用
{…}
时,您正在构造一个匿名哈希引用。哈希需要用键/值对初始化。所以当你写作的时候

$dic->{$firstLetter}={$letra};
这几乎和

my %anon = ( $letra );
$dic->{$firstLetter} = \%anon;
该散列将被弄乱,因为它有一个键但没有值。因此,哈希在构造时希望有一个大小相等的列表,因此每个键都有一个值。对于一个奇数大小的列表,它会发出警告

我猜你可能只是想分配一个简单的标量。所以试试看

$dic->{$firstLetter} = $letra;

不要害怕空格键。:)它使事情更容易阅读。

哈哈,是的,我不会害怕使用空格键!xD但正如我所说的,我想要的是对另一个哈希的$dic引用,但我只想添加来自另一个哈希的密钥!你为什么要问我?因为我想以交互方式将哈希添加到哈希!只有当没有其他东西可以放的时候,我才会在最后添加一个键和一个值!我想要的是$dic引用到另一个散列,但我只想添加来自另一个散列的密钥!你为什么要问我?因为我想以交互方式将哈希添加到哈希!只有当没有其他东西可以放的时候,我才会在最后添加一个键和一个值!我完全不知道你的意思。我会发布我的函数,也许它会更好地理解!
my %anon = ( $letra );
$dic->{$firstLetter} = \%anon;
$dic->{$firstLetter} = $letra;