我有哈希的这个散列,我正在尝试用每个散列的值填充一个选择框。无论如何,我无法访问我的内部哈希变量。我能够在我的选择中生成正确数量的选项,但我目前只能设置每个选择选项的值参数。
继承我的哈希:
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>";
但这也无济于事。我确定我错过了一些简单的事情。
感谢您的帮助:)
答案 0 :(得分:5)
表达式
$export_types{$key}{label}
假设存在哈希%export_types
。不是这种情况。如果您在范围内有use strict
,那么您会收到警告。
因为$export_types
是哈希引用,所以我们必须在使用下标运算符访问某个值之前取消引用它。任
$export_types->{$key}{label}
或
$$export_types{$key}{label}
(我更喜欢前者)。