2016-12-27 2 views
0

Ich stoße auf ein seltsames Problem mit Template Toolkit für Perl. Ich habe es verwendet, um einige Readme-Dateien mit Vorlagen zu generieren, die in utf8 codiert ist, früher in diesem Jahr, die Readme-Datei, die erstellt wurde, war in Ordnung und war in Dos \ Windows Stil der utf8 Codierung mit CR \ LF als Zeilenenden. Irgendwie wurde in meinem Code etwas geändert, das jetzt Readme-Dateien im Macintosh-Stil von utf8 erzeugt, mit CR \ CR \ LF als Zeilenenden, was wiederum viel unnötigen Abstand in meinen generierten Readme-Dateien verursachte.Perl - Vorlage toolkit utf8 encoding OS Option

Der Kodex ist unter:

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

Wo $ readme_file der Pfad, in dem die neue Datei sein wird.

Ich bin auf der Suche nach Möglichkeiten, um es zurück in die Dos/Windows-Stil der utf8-Codierung zu ändern, irgendwelche Ideen, wie man das macht?

+2

Können Sie bitte eine [mcve] erstellen, die Ihr Problem demonstriert? Ansonsten müssen wir nur raten, was mit deinem Code nicht stimmt. – ThisSuitIsBlackNot

+0

Code hinzugefügt, danke für die Erinnerung. –

+1

UTF8 und die Zeilenenden sind nicht verwandt. Mac benutzt einen CR. Was Sie sehen, ist eine zusätzliche Wagenrücklauf. Das hängt wahrscheinlich nicht mit TT zusammen. Kannst du bitte auch eine der Vorlagen und Beispieldaten einfügen? Ich glaube, entweder wurde die Vorlage so bearbeitet, dass sie zusätzliche CRs enthält, oder Ihre Eingabe hat jetzt Zeilenumbrüche, in denen sie zuvor nicht enthalten war. – simbabque

Antwort