我遇到了一个用于Perl的Template toolkit的奇怪问题。我一直用它来生成一些自述文件,这些文件使用utf8编码的模板,今年早些时候,生成的自述文件很好,采用Dos \ Windows风格的utf8编码,CR \ LF作为行结尾。不知何故,我的代码中发生了一些变化,现在它以Macintosh样式utf8生成自述文件,CR \ CR \ LF作为行结尾,这反过来在我生成的自述文件中产生了很多不必要的间距。
守则如下:
my $readme_tmpl = "README_tmpl.tt";
if($os_type eq "LINUX") {
$readme_tmpl = "README_tmpl_linux.tt";
}
my $data_dir = File::Spec->catdir($self->data_dir(), 'BuildSomething');
$data_dir =~ s/\\/\//g;
my $template = Template->new( INCLUDE_PATH => $data_dir );
my %readme_params;
$readme_params{build_app_name} = $pub_env->{BUILD_APP_NAME};
$readme_params{project_name} = $self->project();
$template->process($readme_tmpl, \%readme_params, $readme_file);
其中$ readme_file是新文件的路径。
我正在寻找将其改回dos / Windows风格的utf8编码的方法,有关如何做到的任何想法?
答案 0 :(得分:1)
问题解决了,这篇文章回答了我的问题I get extra CR using TT (perl template toolkit)
然后我设置binmode => 1关于过程方法并且有效。