2012-05-03 58 views
1

變量名是否可以從變量派生?作爲變量的木偶變量

$hash01={instance => '01',street => 'blah'} 

這工作調用定義:

mydefine { '01': hash => $mod::params::hash01 } 

這項工作? (我感興趣的哈希VAR CONCAT)

$var='01' 

mydefine { $var: hash => $mod::params::hash"$var" } 

回答

3

我用inline_template()和scope.lookupvar()這個:

$mod::params::hash01={instance => '01',street => 'blah'} 
$var='01' 
$hash_name="mod::params::hash$var" 
$hash=inline_template("<%= scope.lookupvar(hash_name) %>") 

然而inline_template總是返回字符串,所以它會返回字符串「streetblahinstance01」,由於你的函數需要一個散列,所以這是不行的。

另一種方法是通過使用散列數組來避免該問題。注意數組索引從0開始。

$mod::param::hashes=[{instance=>'00',street=>'fooblah'},{instance=>'01',street=>'blah'}] 
mydefine { $var : hash => $mod::param::hashes[1] } 

https://blog.kumina.nl/tag/inline_template/

+1

我STDLIB發現getvar,這被證明是原來的問題最合適的解決方案。謝謝,因爲你的第二種方法非常有趣。 – rismoney