Und wenn das nicht möglich ist, was ist die beste Vorgehensweise für den Umgang mit man-Seiten, die von UTF-8-kodierten POD abgeleitet sind?
Um mit Unicode in POD zu arbeiten, müssen Sie zuerst die Direktive
verwenden %Vor% (wie besprochen hier ) . Die Werkzeuge pod2text
und pod2html
funktionieren einwandfrei und erzeugen eine perfekte UTF-8-kodierte Ausgabe.
Das Werkzeug pod2man
tut dies jedoch nicht:
Dies gilt auch für perldoc
. Nicht-ASCII-Zeichen sind alle fehlerhaft oder X-out. Es gibt eine nicht ergebnisoffene Diskussion zu Perlbug, ob dies ein Bug sein könnte pod2man
oder ** roff *.
Da mein Modul speziell mit Unicode arbeitet und für die Verteilung auf CPAN gedacht ist, sind Unicode-fähige man-Seiten ein Muss.
Ich verwende Perl 5.14.2, perldoc 3.15 und * roff 1.21.
Alle von perldoc
, pod2man
, nroff
können korrekt mit Unicode UTF-8-Zeichen umgehen. Leider können die Perl-Installer wie Build.PL und das cpan Programm noch nicht. Wenn Sie also während der Installation nicht mit der Hand hantieren, sind die installierten Manpages defekt.
Alle funktionieren korrekt für mein minimales Beispiel :
%Vor% nroff
funktioniert nur, wenn Sie auch die Eingabe Codierung ( -K
) bis groff übergeben ( Quelle ); Sie müssen es mit dem Optionenende -
schützen.
Das ist nett. Die meisten Benutzer werden jedoch die Dokumentation installieren und später mit man MyModule
oder perldoc MyModule
konsultieren. Im Falle von perldoc
haben Sie die Möglichkeit, entweder eine sehr aktuelle Version (3.16) oder den Schalter -t
zu verwenden.
Im Fall von man
, wenn Sie Build.PL (Module :: Build) verwenden, um ein Modul zu installieren, können Sie die defekten generierten Dokumente kurz vor der Installation reparieren:
Schön! Jetzt können Sie die Manpage mit man MyModule
anzeigen.
Wenn Sie cpan verwenden, um das Modul zu installieren, werden Ihre Manpages unterbrochen. (Sie können die gleiche Problemumgehung in Ihrem lokalen CPAN-Build-Verzeichnis versuchen, zB ~/.cpan/build
, was ebenfalls funktionieren sollte.)
Sie haben Glück! Dieser Fehler scheint fixiert in Pod :: Perldoc 3.16 . Also einfach update Pod :: Perldoc und das halbe Problem ist gelöst.
pod2man kommt jedoch von einer unterschiedlichen Verteilung und ist eine völlig andere Codebasis. Es ist immer noch für UTF-8 gebrochen. Leider verwenden die Perl-Installer Man-Pages.
Tags und Links perl unicode internationalization pod man