自前でも安心

自宅の環境にてPerlで遊ぶ際に、Emacs+cperlモード+flymakeが便利ということで導入してみたのですが、どうもcpanコマンドでインストールしたモジュール達をflymakeが見つけられないようで、頻繁にエラーを出してくるのです。

私の自宅の環境(Mac OS 10.6.なんとか)では、/usr/bin/にPerl 5.10がプリインストールされていますが、これとは別に/usr/local/bin/にPerl 5.12を入れていて、遊ぶ際はこちらを使っていました。で、flymakeは、どうも/usr/bin/perlの@INCを見てインストールされたモジュールをチェックしているようで(想像です)、これをなんとかして/usr/local/bin/perlに切り替えられれば良いのではないか(想像です)と考えた訳です。

.bash_profileとか.bashrcとかをどうのこうのして解決するのでも大丈夫かもしれないのですが、私は面倒臭くなってEmacsのinit.elを書き換えました。やったことは単純で、flymake-perl-initの中の”perl”を”/usr/local/bin/perl”に書き換えただけです。

(defun flymake-perl-init ()
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
                     'flymake-create-temp-inplace))
         (local-file (file-relative-name
                      temp-file
                      (file-name-directory buffer-file-name))))
    (list "perl" (list "-Tc" local-file))))

から、

(defun flymake-perl-init ()
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
                     'flymake-create-temp-inplace))
         (local-file (file-relative-name
                      temp-file
                      (file-name-directory buffer-file-name))))
    (list "/usr/local/bin/perl" (list "-Tc" local-file))))

へ。

これが適切な対処なのか解りませんが、今の所は無事に動作しているようなので、ひとまず良しとします。