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

时间:2013-07-26 20:39:37

标签: html perl hash foreach

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

继承我的哈希:

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

这是我迄今为止为我的预言所尝试的内容:

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

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

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

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

感谢您的帮助:)

1 个答案:

答案 0 :(得分:5)

表达式

$export_types{$key}{label}

假设存在哈希%export_types。不是这种情况。如果您在范围内有use strict,那么您会收到警告。

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

$export_types->{$key}{label}

$$export_types{$key}{label}

(我更喜欢前者)。