Perl - 模板工具包utf8编码操作系统选项

时间:2016-12-27 18:54:32

标签: perl templates encoding utf-8

我遇到了一个用于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编码的方法,有关如何做到的任何想法?

1 个答案:

答案 0 :(得分:1)

问题解决了,这篇文章回答了我的问题I get extra CR using TT (perl template toolkit)

然后我设置binmode => 1关于过程方法并且有效。