そこにあるものを「テンプレート」と呼びます。そのため、テンプレート システムを探しています。
これらの引用符が実際には文字列に含まれていないと仮定すると、テンプレート言語を理解できる唯一のテンプレート システムはString::Interpolateです。
$ perl -E'
use String::Interpolate qw( interpolate );
my $template = q!This is a string with hash value of $foo->{bar}!;
local our $foo = { bar => 123 };
say interpolate($template);
'
This is a string with hash value of 123
引用符が文字列の一部である場合、そこにあるのは Perl コードです。そのため、文字列を実行することで、必要なものを取得できます。これは、 を使用して実行できますeval EXPR
。
$ perl -E'
my $template = q!"This is a string with hash value of $foo->{bar}"!;
my $foo = { bar => 123 };
my $result = eval($template);
die $@ if $@;
say $result;
'
This is a string with hash value of 123
これに反対することを強くお勧めします。私は String::Interpolate についても特に知りません。Template::Toolkitは、おそらくテンプレート システムの一般的な選択肢です。
$ perl -e'
use Template qw( );
my $template = q!This is a string with hash value of [% foo.bar %]!."\n";
my %vars = ( foo => { bar => 123 } );
Template->new()->process(\$template, \%vars);
'
This is a string with hash value of 123