使用foreach时在哈希散列中访问哈希参数的语法

Roo*_*ter 1 html perl hash foreach

我有哈希的哈希,我正在尝试用每个哈希的值填充一个选择框.无论如何,我无法访问我的内部哈希变量.我能够在我的选择中生成正确数量的选项,但我目前只能设置每个选择选项的值参数.

继承我的哈希:

my $export_types = { a      => {label => "Foo", ext => ".js"},
                     b      => {label => "Bar", ext => ".gz"}};
Run Code Online (Sandbox Code Playgroud)

以下是我迄今为止尝试的内容:

my $select = "<select id='fancy'>";
foreach my $key (sort keys %{$export_types})
{
    $select .= "<option value='$key' ";
    if($saved_value eq $key || (!$saved_value && $key eq "a"))
    {
        $select .="selected='selected'";
    }
    $select .= ">".$export_types{$key}{label}."</option>";
}
$select .= "</select>";
Run Code Online (Sandbox Code Playgroud)

显然我正在访问标签属性错误.对于那条特定的线路,我也尝试过:

$select .= ">".$export_types{$key}->{label}."</option>";
Run Code Online (Sandbox Code Playgroud)

但那也无济于事.我确定我错过了一些简单的事情.

谢谢您的帮助 :)

amo*_*mon 5

表达方式

$export_types{$key}{label}
Run Code Online (Sandbox Code Playgroud)

假设有一个哈希值%export_types.不是这种情况.如果你有一个use strict范围,你会被提醒这个事实.

因为$export_types是哈希引用,所以在使用下标运算符访问某个值之前,我们必须取消引用它.或

$export_types->{$key}{label}
Run Code Online (Sandbox Code Playgroud)

要么

$$export_types{$key}{label}
Run Code Online (Sandbox Code Playgroud)

(我更喜欢前者).