Perl基于模板生成文件
我正在处理一个用例,该用例要求我基于模板生成.hpp文件。大概是Perl基于模板生成文件,perl,perl-module,Perl,Perl Module,我正在处理一个用例,该用例要求我基于模板生成.hpp文件。大概是 #ifdef changethis_hpp #define changethis_hpp #include<fixedheader1> ... #include<fixedheaderN> class changethis { .... }; #如果DEF更改此水电站 #定义该水电站 #包括 ... #包括 阶级变革 { .... }; 需要根据changethis字符串的要求生成。 如何在perl
#ifdef changethis_hpp
#define changethis_hpp
#include<fixedheader1>
...
#include<fixedheaderN>
class changethis
{
....
};
#如果DEF更改此水电站
#定义该水电站
#包括
...
#包括
阶级变革
{
....
};
需要根据changethis
字符串的要求生成。
如何在perl中实现这一点
WHITSF
我编写了一个fixed template.txt文件,然后将文本替换为changethis
字符串,然后将其作为changethis.hpp转储
但是在perl中还有其他方法可以实现这一点吗?我用于此类任务。我用于此类任务。有一个perl常见问题解答。它是这样开始的:
如果可以避免,不要,或者如果可以使用模板系统,
例如,或Toolkit,请改为这样做。
您甚至可以使用sprintf
或printf
完成工作:
my $string = sprintf 'Say hello to %s and %s', $foo, $bar;
但是,对于一次过的简单情况,我不想退出
完整的模板系统,我将使用一个包含两个Perl标量的字符串
其中的变量。在本例中,我想将$foo
和$bar
展开为
其变量的值:
my $foo = 'Fred';
my $bar = 'Barney';
$string = 'Say hello to $foo and $bar';
一种方法是使用替换运算符和双精度/e
旗帜第一个/e
在替换侧计算$1
,并将其旋转
进入$foo
。第二个/e
以$foo
开头,并用其
价值观<代码>$foo,然后变成“Fred”,这就是最后剩下的内容
字符串:
$string =~ s/(\$\w+)/$1/eeg; # 'Say hello to Fred and Barney'
/e
也会默默地忽略违反严格的
具有空字符串的未定义变量名。因为我使用的是/e
flag(两倍偶数!),我也有同样的安全问题
以字符串形式求值。如果$foo
中有什么奇怪的地方,也许
类似于@{[system“rm-rf/”]}
,这样我就可以自己进去了
麻烦
我强烈建议您忽略大部分建议,直接转到模板系统(如第一行中所建议的)。这里有一个Perl常见问题解答。它是这样开始的:
如果可以避免,不要,或者如果可以使用模板系统,
例如,或Toolkit,请改为这样做。
您甚至可以使用sprintf
或printf
完成工作:
my $string = sprintf 'Say hello to %s and %s', $foo, $bar;
但是,对于一次过的简单情况,我不想退出
完整的模板系统,我将使用一个包含两个Perl标量的字符串
其中的变量。在本例中,我想将$foo
和$bar
展开为
其变量的值:
my $foo = 'Fred';
my $bar = 'Barney';
$string = 'Say hello to $foo and $bar';
一种方法是使用替换运算符和双精度/e
旗帜第一个/e
在替换侧计算$1
,并将其旋转
进入$foo
。第二个/e
以$foo
开头,并用其
价值观<代码>$foo,然后变成“Fred”,这就是最后剩下的内容
字符串:
$string =~ s/(\$\w+)/$1/eeg; # 'Say hello to Fred and Barney'
/e
也会默默地忽略违反严格的
具有空字符串的未定义变量名。因为我使用的是/e
flag(两倍偶数!),我也有同样的安全问题
以字符串形式求值。如果$foo
中有什么奇怪的地方,也许
类似于@{[system“rm-rf/”]}
,这样我就可以自己进去了
麻烦
我强烈建议您忽略大部分建议,直接使用模板系统(如第一行中的建议)