加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我使用TT(perl模板工具包)获得额外的CR

发布时间:2020-12-15 21:47:48 所属栏目:大数据 来源:网络整理
导读:我使用perl v5.10(在 Windows 7上)TT v2.22.当我使用TT时,对于每个源代码行,我在生成的html中获得了额外的CR: 源文本(Windows格式): "Some_html" CR LF 输出文字: "Some_html" CR CR LF 但是,当我将源文件转换为unix格式,然后运行TT时,我得到: 源文本(un
我使用perl v5.10(在 Windows 7上)TT v2.22.当我使用TT时,对于每个源代码行,我在生成的html中获得了额外的CR:

源文本(Windows格式):

"Some_html" CR LF

输出文字:

"Some_html" CR  
CR LF

但是,当我将源文件转换为unix格式,然后运行TT时,我得到:
源文本(unix格式):

"Some_html" LF

输出文字:

"Some_html" CR LF

(我使用记事本来显示CR& LF字符;也可以在源模板中更改unix< - >窗口格式).

当我解决这个问题时,我在Windows上得到了一些关于额外^ M的帖子,但我找不到关于根本原因的解释也没有真正的解决方案(只是一些解决方法如何摆脱额外的^ M).

虽然不是一个真正的问题,但我发现它非常“不洁净”.
是否有一些配置,我应该打开(我审查了www.template-toolkit.org/docs/manual/Config.html,但找不到任何东西)?
其他解决方案? (除了修复输出文件之外).
谢谢

解决方法

Template Toolkit以二进制模式读取模板的源文件,但以文本模式写入.来自模板的数据(包含CR LF)在文本模式的输出期间被转换,因此LF变为CR LF.

解决此问题的最简单方法是以二进制模式写入文件(请注意原始修饰符以打开调用):

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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读