我正在处理一个脚本,该脚本具有一些传递给字符串的变量,然后将其打印出来。最初的字符串只有6行,我不需要外部文件,但现在有了一个新字符串,可以填充1000行以上。新字符串还具有一些字段,这些字段将被脚本中声明的变量替换。
文本文件具有以下内容:
Hello $name
Run Code Online (Sandbox Code Playgroud)
该代码应该包含几个部分。
my $name = 'Foo';
Run Code Online (Sandbox Code Playgroud)
my $content;
open(my $fh, '<', $filename) or die "cannot open file $filename";
{
local $/;
$content = <$fh>;
}
close($fh);
Run Code Online (Sandbox Code Playgroud)
print $content
Run Code Online (Sandbox Code Playgroud)
预期结果:
Hello Foo
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能从文件中读取“ Hello $ name”但将其打印为“ Hello Foo”,因为变量名称被声明为Foo。
因此,您希望文件成为模板。为什么不使用像一个真正的模板语言这一项?
use Template qw( );
my %vars = (
name => "Foo",
);
my $tt = Template->new();
$tt->process($qfn, \%vars)
or die($tt->error());
Run Code Online (Sandbox Code Playgroud)
模板:
Hello [% name %]
Run Code Online (Sandbox Code Playgroud)
使用->process的第三个arg 可以捕获输出而不是打印输出。
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |