ger*_*ard 5 perl template-toolkit
我使用perl v5.10(在Windows 7上)+ TT v2.22.当我使用TT时,对于每个源代码行,我都会在生成的html中获得额外的内容CR
:
源文本(Windows格式):
"Some_html" CR LF
Run Code Online (Sandbox Code Playgroud)
输出文字:
"Some_html" CR
CR LF
Run Code Online (Sandbox Code Playgroud)
但是,当我将源文件转换为unix格式,然后运行TT时,我得到:
源文本(unix格式):
"Some_html" LF
Run Code Online (Sandbox Code Playgroud)
输出文字:
"Some_html" CR LF
Run Code Online (Sandbox Code Playgroud)
(我使用notepad ++来显示CR和LF字符;也可以在源模板中更改unix < - > windows格式).
当我解决这个问题时,我得到了一些(少数)^M
关于Windows上额外的帖子,但是我找不到关于根本原因的解释也没有真正的解决方案(只是一些解决方法如何摆脱额外的^M
).
虽然不是一个真正的问题,但我发现它非常"不干净".
是否有一些我应该打开的配置(我查看了www.template-toolkit.org/docs/manual/Config.html但找不到任何内容)?
其他解决方案?(除了修复输出文件之外).
谢谢
bvr*_*bvr 11
Template Toolkit以二进制模式读取模板的源文件,但以文本模式写入.来自模板的数据(包含CR LF)在文本模式的输出期间被转换,因此LF变为CR LF.
解决此问题的最简单方法是以二进制模式写入文件(请注意raw
要open
调用的修饰符):
my $tt = Template->new;
my $output_file = 'some_file.txt';
open my $out_fh, '>:raw', $output_file or die "$output_file: $!\n";
$tt->process('template', \%data, $out_fh) or die $tt->error();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1016 次 |
最近记录: |