1

我有这个散列散列,我试图用每个散列的值填充一个选择框。无论如何,我无法获取我的内部哈希变量。我能够在我的选择中生成正确数量的选项,但我目前只能设置每个选择选项的值参数。

这是我的哈希:

my $export_types = { a      => {label => "Foo", ext => ".js"},
                     b      => {label => "Bar", ext => ".gz"}};

这是我到目前为止为我的 foreach 所做的尝试:

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>";

显然我访问标签属性错误。对于那条特定的行,我也尝试过:

$select .= ">".$export_types{$key}->{label}."</option>";

但这也无济于事。我确定我错过了一些简单的东西。

谢谢您的帮助 :)

4

1 回答 1

5

表达方式

$export_types{$key}{label}

假设有一个 hash %export_types。不是这种情况。如果你有一个use strict在范围内,你会注意到这个事实。

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

$export_types->{$key}{label}

或者

$$export_types{$key}{label}

(我更喜欢前者)。

于 2013-07-26T20:45:58.713 回答