2011-03-08 25 views
1

大家好 我有一個模塊與一個子從它的參數從例如。 script.pl 在script.pl中,我以這種方式調用函數moduleName :: sunName(\%hashref)。
現在在模塊中,在子體中,我想打印通過的參數。我也想檢查這個HREF的每個鍵的值是空的打印「 - 」而不是0 模塊的第一部分:得到哈希引用密鑰和從另一個腳本的值

sub printOptions { 

    my $opt = shift; 
    # I have this 
    print $opt->{'id'}; 
    # But I need all parameters! 
} 

感謝

回答

2

馬特,你得到的時刻?取消引用引用$選擇,你可以做

%opt = %{ $opt } 

遍歷鍵就可以再做

for my $key (sort keys %opt) { 
    print "$key: " . ($opt{ $key } || '-') . "\n"; 
} 
+0

錯字:你不需要'$值'。 – FMc

+0

感謝FM,一個剩餘的編輯 –

+0

另一個,你需要不是迭代列表的圓括號'(sort keys%opt)' –

2

嘗試:

sub printOptions { 
    my $opt = shift @_; 

    for my $key (sort keys %$opt){ 
    if(defined($opt->{$key})){ 
     print "$key: $opt->{$key}\n"; 
    }else{ 
     print "$key: undef\n"; 
    } 
    } 
} 
+0

解決了我的問題。謝謝shawncorey –

相關問題