1

変数から変数名を派生させることはできますか?

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

これは定義を呼び出すために機能します:

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

これは機能しますか?(ハッシュ変数の連結に興味があります)

$var='01'

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

1 に答える 1

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/参照

于 2012-05-07T11:46:32.493 に答える