(Perl)从文件中读取字符串时是否可以插入变量?

Muh*_*far 2 perl

我正在处理一个脚本,该脚本具有一些传递给字符串的变量,然后将其打印出来。最初的字符串只有6行,我不需要外部文件,但现在有了一个新字符串,可以填充1000行以上。新字符串还具有一些字段,这些字段将被脚本中声明的变量替换。

文本文件具有以下内容:

Hello $name
Run Code Online (Sandbox Code Playgroud)

该代码应该包含几个部分。

  1. 变量声明
my $name = 'Foo';
Run Code Online (Sandbox Code Playgroud)
  1. 打开文件并将其读入字符串。
my $content;
open(my $fh, '<', $filename) or die "cannot open file $filename";
{
    local $/;
    $content = <$fh>;
}
close($fh);
Run Code Online (Sandbox Code Playgroud)
  1. 打印字符串
print $content
Run Code Online (Sandbox Code Playgroud)

预期结果:

Hello Foo
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能从文件中读取“ Hello $ name”但将其打印为“ Hello Foo”,因为变量名称被声明为Foo。

ike*_*ami 5

因此,您希望文件成为模板。为什么不使用像一个真正的模板语言这一项

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 可以捕获输出而不是打印输出。