18910140161

html网页制作代码大全 HTML-"CAN't使用字符串("")作为散列引用,而"严格引用"在"使用中为Perl中的哈希分配哈希时出错-堆栈溢出

顺晟科技

2022-10-18 12:14:27

180

我正在将一个hash%attributes分配给另一个hash%attributes_r。如下所述,我需要将其打印为hash%attributes的键/值对。但是,在打印时,为什么我得到这个错误,";不能使用字符串(";";)作为哈希引用,而&“严格引用”在";使用中在该行中";Foreach my$key1(键%{$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;
  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航