理系学生日記

おまえはいつまで学生気分なのか

perlbrew環境でcperl-perldocをひく

perlbrew といえば自分の $HOME にローカルな Perl 環境を複数構築できるとツールで、最近の Perl の人々はこれを使うか自分でソースから $HOME とかにビルドするかしてると思います。これによってシステムワイドな perl を使わなくて済みますし、当然ながら sudo cpan([mp])? なんていうことはしなくて済むようになります。

しかし、メンドくさいのがその perlbrew 環境の perl 情報を Emacs 側に引き継がせることです。ぼくはモジュールのドキュメントを参照するときなどに cperl-perldoc(-at-point) なんかをよくつかっているのですが、これができなくなってしまった。より正しく言えば、cperl-perldoc なんかで使われる perldoc はシステムの Perl を使用してしまうので、perldoc 環境にいくらモジュールをいれてもそのドキュメントを参照できない。

この解決方法を知ったのが 1 年前でしたが、perlbrew.el が出てきたので、ちょっと書き換えました。

(require 'perlbrew)

;;; Prepend perlbrew paths to exec-path
(perlbrew-set-current-perl-path)
(mapc (lambda (x) (add-to-list 'exec-path x))
      (mapcar 'expand-file-name
              (list (perlbrew-get-current-perl-path))))
;;; set PATH to be the same as exec-path, clobber the old PATH value.
(setenv "PATH"
        (reduce (lambda (a b) (concatenate 'string a ":" b))
                exec-path))