2013-07-26 23 views
1

我已經得到了散列哈希值,我試圖用每個哈希值中的值填充選擇框。無論如何,我無法獲得我的內部哈希變量。我能夠在我的選擇中生成正確數量的選項,但是我目前只能設置每個選擇選項的值參數。用於在使用foreach時訪問散列哈希中的散列參數的語法

我的繼承人哈希:

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

但這也無濟於事。我確定我錯過了一些簡單的東西。

感謝您的幫助:)

回答

5

表達

$export_types{$key}{label} 

假設有一個散列%export_types。不是這種情況。如果您的範圍爲use strict,您將會收到警報。

因爲$export_types散列引用,我們必須在使用下標運算符訪問某個值之前對其進行解引用。無論是

$export_types->{$key}{label} 

$$export_types{$key}{label} 

(我更喜歡前者)。

+0

太棒了!感謝您及時的回覆! – Rooster