我正在将一个哈希 %attributes
分配给另一个哈希 %attributes_r
。我需要将其打印为该哈希 %attributes
的键/值对,如下所述。但是,在打印时,为什么我会收到此错误,“在这一行“foreach my $key1 (keys %{$attributes_r{ $key}}) {"?
我的代码:
use strict;
use warnings;
our %attributes_r;
my %attributes = ('clear' => 0,
'reset' => 0,
'bold' => 1,
'dark' => 2,
'underscore' => 4,
'blink' => 5,
'reverse' => 7,
'concealed' => 8
);
for (keys %attributes) {
$attributes_r{$attributes{$_}} = $attributes{$_};
# print "$_ => $attributes_r{$attributes{$_}}\n";
}
foreach my $key (keys %attributes_r) {
foreach my $key1 (keys %{$attributes_r{$key}}) {
print "$key1 = > $attributes_r{$key}{$key1}\n";
}
}
感谢任何帮助。
最佳答案
使用您的数据,这是不正确的:
foreach my $key1 (keys %{$attributes_r{$key}}) {
您正在尝试放置一个字符串的值,而不是引用,就像错误所说的那样。如果您确实有哈希的哈希,它可能会起作用,但您不行。
我不确定您可能正在尝试创建哈希。这件代码非常奇怪:
$attributes_r{$attributes{$_}} = $attributes{$_};
在这里,您是从原始哈希中获取值,并将其用作另一个哈希的键。例如:
$attributes_r{0} = 0;
这并不能真正完成任何有用的事情。如果您澄清您要做的是什么,我可能会建议解决问题。
另外,如果您试图查看要创建的数据结构,建议您使用 data::Dumper
这样的打印它:
use Data::Dumper;
...
print Dumper \%attributes_r;
关于html - "Can' t 使用字符串 ( "") 作为 HASH 引用,而 "strict refs"在使用时出现“将哈希分配给 Perl 中的哈希时出错”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68386811/