【Perl】 日本語Podを正しく表示する
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
ウチの開発環境(CentOS 6.2)で少し前から、perldoc
コマンドでPodドキュメントを開くと、以下のような警告が良く見られるようになりました。
1 2 3 4 5 6 7 8 9 |
[atomitech@node02 ~]$ perldoc version You have an old groff. Update to version 1.20.1 for good Unicode support. If you don't upgrade, wide characters may come out oddly. at /home/atomitech/perl5/perlbrew/perls/perl-5.14.2/lib/5.14.2/Pod/Perldoc.pm line 1346. You have an old groff. Update to version 1.20.1 for good Unicode support. If you don't upgrade, wide characters may come out oddly. at /home/atomitech/perl5/perlbrew/perls/perl-5.14.2/lib/5.14.2/Pod/Perldoc.pm line 1346. |
groff
のバージョンが古いため、Wide Characterが正しく表示されない、という旨の警告のようです。ちなみにgroff
のバージョンは1.18.1.4です。
まず、そもそもこの環境で日本語のPodを本当に読めないのか、ふと気になったので調べてみました。以下のようなモジュールを書いて検証してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package MyApp; 1; __END__ =encoding utf-8 =head1 hello hello =head1 こんにちは こんにちは =cut |
perldoc
コマンドで表示させると、次のように表示されます。
やはり、日本語の部分が表示されていません。
警告に従って、groffの最新版をインストールします。gnuのFTPサイトから最新版(1.21)を入手し、コンパイルしてインストールします。
1 2 3 4 5 |
$ tar xvzf groff-1.21.tar.gz $ cd groff-1.21/ $ ./configure $ make $ sudo make install |
ちなみに私の環境では、gcc-c++パッケージが不足していたため、途中で別途インストールしました。
インストール後、先ほどのPodが正しく表示されるかどうか確認してみます。
表示されることは表示されましたが、今度は制御記号らしきものが一緒に表示されてしまっています。これは端末上の文字に色を付けるためのエスケープシーケンスのようです。なぜこのように表示されるのか原因を調べたところ、私の環境で環境変数PAGER
にless
と設定していたことが原因のようでした(psql
コマンドにページャを設定するために、このようにしていました)。
回避方法としては、環境変数PAGER
を以下のように再設定します。
1 |
export PAGER='/usr/bin/less -R' |
オプションの-R
は、テキストに上記のエスケープシーケンスが含まれる場合に、文字色を正しく端末上に反映します。
それでは、再度Podを表示してみます。
無事、エスケープシーケンスも消え、文字色も含めて正しく表示されるようになりました。
以上、簡単ですが日本語Podの話題をご紹介しました。