变量名可以从变量派生吗?
$hash01={instance => '01',street => 'blah'}
这可以调用定义:
mydefine { '01': hash => $mod::params::hash01 }
这能行吗?(我对 hash var concat 感兴趣)
$var='01'
mydefine { $var: hash => $mod::params::hash"$var" }
变量名可以从变量派生吗?
$hash01={instance => '01',street => 'blah'}
这可以调用定义:
mydefine { '01': hash => $mod::params::hash01 }
这能行吗?(我对 hash var concat 感兴趣)
$var='01'
mydefine { $var: hash => $mod::params::hash"$var" }
我为此使用了 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] }