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

标签 perl

我正在编写一个脚本,其中包含一些传递给字符串的变量,然后将它们打印出来。初始字符串只有 6 行,我不需要外部文件,但我现在有一个可以填充 1000 多行的新字符串。新字符串还有一些字段将被脚本中声明的变量替换。

文本文件是这样的:

Hello $name

代码应该有几个部分。

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

预期结果:

Hello Foo

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

最佳答案

所以你希望你的文件是一个模板。为什么不使用适当的模板语言,如 this one

use Template qw( );

my %vars = (
   name => "Foo",
);

my $tt = Template->new();
$tt->process($qfn, \%vars)
   or die($tt->error());

模板:

Hello [% name %]

可以使用 ->process 的第三个参数捕获而不是打印输出。

关于perl - (Perl) 从文件中读取字符串时是否可以插入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57812884/

相关文章:

perl - 如何仅更改文件的第一行?

arrays - 如何使用 perl 从第一次出现具有特定值的元素开始遍历数组?

perl - 在 Perl 中,如何只替换字符串的第一个字符?

windows - 如何识别 Perl 字符串中的 Windows 文件路径?

regex - {8} 字符串的 perl 正则表达式,包含十进制数字和字母,仅此而已

perl - 使用关系在 DBIx::Class 中搜索

regex - 如何在 Perl 中组合两种模式

Perl Term::ReadLine::Gnu 信号处理难点

perl - 无法创建 WWW:Mechanize::Firefox 的实例

perl - 如何对用perlcc编译的Perl程序进行反向工程?