perl数组在映射中散列错误,因为它说不能使用id,因为正在使用严格引用

perl数组在映射中散列错误,因为它说不能使用id,因为正在使用严格引用,perl,Perl,这段代码有什么问题,它给我的错误是“不能使用字符串{id}作为散列引用,而使用'strict refs'”您需要在@extensiveArray中使用散列引用。您现在拥有的是一个简单的列表。Perl不支持嵌套列表 #!/usr/bin/perl -w use strict; my @extensiveArray = (( id => 1, name => 'Bob', ), ( id => 2, name => 'Barl

这段代码有什么问题,它给我的错误是“不能使用字符串{id}作为散列引用,而使用'strict refs'”

您需要在
@extensiveArray
中使用散列引用。您现在拥有的是一个简单的列表。Perl不支持嵌套列表

#!/usr/bin/perl -w
use strict;

my @extensiveArray = ((
    id => 1,
    name => 'Bob',
    ),
    (
    id => 2,
    name => 'Barley',
    ),
    (
    id => 3,
name => 'Marley',
)
);


my %hashRef = map { $_->{id} => { $_->{name} } } @extensiveArray;
一旦这样做,您将在匿名散列中得到奇数个元素的错误,因为
{}

my @extensiveArray = (
    {
        id   => 1,
        name => 'Bob',
    },
    {
        id   => 2,
        name => 'Barley',
    },
    {
        id   => 3,
        name => 'Marley',
    }
);
如果要从
映射返回键/值对
,只需返回一个平面列表即可。这就是杂烩,真的

                                #    here    #
my %hashRef = map { $_->{id} => { $_->{name} } } @extensiveArray;

您应该签出并链接到那里的其他页面。

您需要在
@extensiveArray
中使用哈希引用。您现在拥有的是一个简单的列表。Perl不支持嵌套列表

#!/usr/bin/perl -w
use strict;

my @extensiveArray = ((
    id => 1,
    name => 'Bob',
    ),
    (
    id => 2,
    name => 'Barley',
    ),
    (
    id => 3,
name => 'Marley',
)
);


my %hashRef = map { $_->{id} => { $_->{name} } } @extensiveArray;
一旦这样做,您将在匿名散列中得到奇数个元素的错误,因为
{}

my @extensiveArray = (
    {
        id   => 1,
        name => 'Bob',
    },
    {
        id   => 2,
        name => 'Barley',
    },
    {
        id   => 3,
        name => 'Marley',
    }
);
如果要从
映射返回键/值对
,只需返回一个平面列表即可。这就是杂烩,真的

                                #    here    #
my %hashRef = map { $_->{id} => { $_->{name} } } @extensiveArray;

你应该签出并链接到那里的其他页面。

@extensiveArray
不是你想象的那样<代码>使用数据::转储程序;打印转储程序\@扩展阵列同时检查数组的来源-您是否正在阅读XML或JSON?因为可能有更好的解决方案?该代码不会给出该错误。
@extensiveArray
不是您想象的那样<代码>使用数据::转储程序;打印转储程序\@扩展阵列同时检查数组的来源-您是否正在阅读XML或JSON?因为可能有更好的解决方案?该代码不会给出该错误。