乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
perl 3.08 根据模板生成文件
2016-05-28 05:03:14
77
0
0
admin
>经常会有根据一些模板来生成配置文件或者cgi 页面的需求,这时候我们可以使用template模块 文档: http://search.cpan.org/~abw/Template-Toolkit-2.24/lib/Template.pm 安装: yum -y install perl-Template-Toolkit *该模块允许template 文件中有perl 语句块,你可以理解成jsp 页面中的jsp 语句* #直接上code ```perl #!/usr/bin/perl use warnings; use strict; use Template; my $config = { INCLUDE_PATH => '/root/', #要操作的文件所在目录 POST_CHOMP => 1, #删除不需要的换行符,比如perl 语句块后面的 EVAL_PERL => 1, #允许执行perl 语句块 }; my $template = Template->new($config); #创建这个对象 #现在我们来定义需要替换的变量 my $value = "the value"; my %hash = ("first" => "111","second" => "222"); my @list = qw( lala wawa haha ); my $vars = { var1 => $value, var2 => \%hash, var3 => \@list, }; my $input = 'file'; #作为模板的文件 #$template->process($input, $vars, './abc') 用这种写法可以指定输出的文件,默认STDOUT $template->process($input, $vars) || die $template->error(); ``` #尝试运行 ```bash [root@test ~]# cat file This is the file: ==[% var1 %]== ==[% var2.first %]==[% var2.second %]== ==[% var3.0 %]==[% var3.1 %]==[% var3.2 %]== [% SET n = 0 %] [% FOREACH THE_VALUE IN var3 %][% n = n + 1 %] ==[% n %]==>==[% THE_VALUE %]== [% END %] [root@test ~]# ./template.pl This is the file: ==the value== ==111==222== ==lala==wawa==haha== ==1==>==lala== ==2==>==wawa== ==3==>==haha== ``` *** #更多template 的写法 (从文档中copy 来的) ##获得值 ``` [% GET variable %] # 'GET' 可以省略 [% variable %] [% hash.key %] [% list.n %] [% code(args) %] [% obj.meth(args) %] [% "value: $var" %] [% CALL variable %] #不会打印出来 ``` ##赋值 ``` [% SET variable = value %] # 'SET' 可以省略 [% variable = other_variable variable = 'literal text @ $100' variable = "interpolated text: $var" list = [ val, val, val, val, ... ] list = [ val..val ] hash = { var => val, var => val, ... } %] [% DEFAULT variable = value %] #只有variable为空值时候才会赋值 ``` ##导入文件 ``` [% INSERT legalese.txt %] #导入一个文件 [% INCLUDE template %] #导入并处理文件 [% INCLUDE template var = val, ... %] [% PROCESS template %] #导入并处理文件,这里声明的变量是全局的,可以在以后使用 [% PROCESS template var = val, ... %] ``` ##foreach ``` [% FOREACH variable IN [ val, val, val ] %] [% FOREACH variable IN list %] The variable is set to [% variable %] [% END %] ``` ##while ``` [% WHILE condition %] content [% END %] ``` ##if ``` [% IF condition %] content [% ELSIF condition %] content [% ELSE %] content [% END %] ``` ##unless ``` [% UNLESS condition %] content [% ELSIF condition %] content [% ELSE %] content [% END %] ``` ##switch/case ``` [% SWITCH variable %] [% CASE val1 %] content [% CASE [ val2, val3 ] %] content [% CASE %] content [% END %] ``` ##run perl code (需要 EVAL_PERL = 1) ``` [% PERL %] my $a = 1; my $b = 2; my $c = $a + $b; print "a + b = $c\n"; [% END %] ``` ##其他 ``` [% NEXT %] #用于foreach/while [% LAST %] #用于foreach/while ```
上一篇:
perl 3.07 处理CSV 格式文件
下一篇:
python 0.0 介绍
文档导航