自分は(たぶん)Mac Portsで入れた/opt/local/bin/perlを主に使っている。
で、/usr/bin/perlでなく/opt/local/bin/perlを優先的に使うように、.zshrcで
export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:$PATH
と設定してあり、CPANでモジュールをインストールするときも/opt/local/bin/cpanで入れていた。
で、perl-completion.elを使っていて、モジュールのperldocを参照しながら書きたくて"C-c d"とかでインストール済みモジュールを調べようとすると、どうもインストールしてあるはずのモジュールが出てこない。
どうやら/usr/bin/perlの方のモジュールが一覧表示されているらしい。
どういう仕組みになっているんだろう、とplcmp-get-installed-modulesあたりを追いかけてみると、途中で
find `perl -e 'pop @INC; print join(q{ }, @INC);'`
というコマンドの実行結果を利用している部分があることを発見。
ここで使われるperlコマンドはおそらくemacs内でPATH指定していなければ普通に/usr/bin/perlを使われてしまう。
ということはemacsの中でも.zshrcと同様にPATHを変更してやる必要があるのか、と~/.emacs.el内に
(setenv "PATH" (concat "/opt/local/bin:" "/opt/local/sbin:" "/usr/local/bin:" (getenv "PATH")))
というのを追加してみたところ、うまく/opt/local/bin/perlで使うモジュールのドキュメントを参照できるようになった。