html - "Can' t 使用字符串 ( "") 作为 HASH 引用,而 "strict refs"在使用时出现“将哈希分配给 Perl 中的哈希时出错”

标签 html xml perl

我正在将一个哈希 %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/

相关文章:

Javascript等待函数完成调用另一个内部函数

Javascript - 提交表单错误

xml - 如何使用内胚包装器来修复这个练习?

java - Android 按钮 onClick 不起作用

Javascript,-100% 的视口(viewport)不是像素

c# - 复制 xml 文件并在特定位置插入新元素 - C#

perl - 尝试使用 perl 查找字符串中第一个数字的索引

perl - 如何为 Perl 系统调用指定超时限制?

linux - 在脚本化 Web 应用程序中是否更喜欢 fork 进程(而不是 fork 线程)?

javascript - SVG 对象显示切换停止 EventListener