从perl结果中删除键/值对全局符号需要显式包名称错误

Nab*_*bou 0 variables perl hash cgi

我试图从哈希中删除某些键/值对,但我得到全局符号需要显式包名异常,我不知道如何调试它.我读了一些解决方案,但似乎都没有.所以散列以这种方式声明:

my $hash = foo();
Run Code Online (Sandbox Code Playgroud)

然后我使用这行代码完成哈希:

while (my ($key, $value) = each %$hash)
Run Code Online (Sandbox Code Playgroud)

并在块中我选择我不想要的值并将这些值的键存储在一个声明为这样的数组中(当然循环之前):

my @keysArray = ();
Run Code Online (Sandbox Code Playgroud)

然后我访问该数组以使用此代码检索密钥,以便我可以从哈希中删除它们:

for my $key (@keysArray){
    delete $hash{$key};# this line of code is causing the problem
}
Run Code Online (Sandbox Code Playgroud)

我写的最后一行是导致全局符号"%hash"需要显式包名异常的行.

任何修复或我在这里做错了什么.

PS我更改了变量名并删除了其他内部代码,但格式相同.

请帮忙!谢谢.

hob*_*bbs 9

delete $hash{$key}从中删除条目%hash.没有%hash.相反,你想写delete $hash->{$key},从中删除一个条目%$hash.

我建议perldoc perlreftut回答你关于引用的所有问题以及如何使用它们.