開発環境バージョンアップ
今週は水曜も祝日で週末も特に予定がなかったので、結構暇ができました。で、何をしようかなと考えたのですが、最近はずっと前に買ってまだ読み終わっていないPerl本で勉強をしているので、Perlの開発環境を整えようかと。
私が一応使えるよと言えるレベルの言語は、PerlとJavaとABAP*1です。基本的に、PerlはEmacs(Meadow)で、JavaはEclipse上で組んでいます*2。で、Meadowの環境は、大学のときにある程度整えていたのですが、この質問を見てもっと便利なやつがないかを調査調査。
今までデバッグ環境というものにあまりこだわったことがなくて、Meadowで書いてコマンドプロンプトでデバッグという作業環境だったが、Meadowにsvnクライアント(psvn)入れた勢いにのってperlのデバッグもMeadowでやってみようと。
いろいろ目についたけど、これかな。mode-compile.elっていうやつ。キー一発で、別ウィンドウ開いてコンパイルし、そのウィンドウからまたキー一発でエラーの行までジャンプ。Perlだけでなく、他の言語にも対応しているみたい。
.emacsの設定は、ほぼリンク先のまま。キーバインドを「\C-cc」から「\C-c\C-c」に変更したぐらい。あ、あと以前からcperl-modeは使っていたけど、こちらの方がスマートだったので、変更。
;; perl-mode -> cperl-mode (defalias 'perl-mode 'cperl-mode) ;; mode-compile (autoload 'mode-compile "mode-compile" "Command to compile current buffer file based on the major mode" t) (global-set-key "\C-c\C-c" 'mode-compile) (autoload 'mode-compile-kill "mode-compile" "Command to kill a compilation launched by `mode-compile'" t) (global-set-key "\C-ck" 'mode-compile-kill)
あとは、mode-compile.elをダウンロードしてきて、適当にsite-lispにでも突っ込むと完成!…なはずですが、なぜか動かない…。
コマンド実行時のエラーメッセージを見てみると、以下のようなログが。
C:/cygwin/bin\perl.exe -w d:/MyDocuments/study/BeyondThePerl/helloWorld.pl /usr/bin/sh: C:/cygwin/binperl.exe: No such file or directory
どうやら、「C:/cygwin/bin\perl」のバックスラッシュが単なるエスケープ文字に変わって「C:/cygwin/binperl」になっているみたい。ただ、悲しいかな、Emacs Lispの知識がなさ過ぎて、これをどうやって正しい文字列に直すのかは不明。
苦し紛れに、絶対パスでPerlコマンドを指定するのではなく、(環境変数$PATHが正しく設定されているものとして)ダイレクトにPerlを実行するように。つまり、「C:/cygwin/bin\perl」→「perl」と修正。環境変数が事前に正しく設定されていれば、これで動くでしょう。
ダウンロードしてきたmode-compile.pl内の該当箇所を変更。具体的には、「shcmd」に「C:/cygwin/bin\perl」が、「shell」に「perl」が入っているので、「shcmd」→「shell」に。
(run-cmd (concat shcmd " " dbgflags " " shfile " " (setq mc--shell-args (read-string (if mode-compile-expert-p "Argv: " (format "Arguments to %s %s script: " shfile shell)) mc--shell-args)))))
から
(run-cmd (concat shell " " dbgflags " " shfile " " (setq mc--shell-args (read-string (if mode-compile-expert-p "Argv: " (format "Arguments to %s %s script: " shfile shell)) mc--shell-args)))))
かなりバッドノウハウ的な手法ですが、なんにせよ、これで開発が少しやりやすくなりました。ちょっとレベルアップですね♪
開発環境2.0なんて言う勇気はありません。世間の人から見たら、2.0どころか0.5にすらなっているかどうかも怪しいぐらい、まだまだ未成熟な環境でしょうから…orz
続・初めてのPerl - Perlオブジェクト、リファレンス、モジュール
- 作者: Randal L.Schwartz,Tom Phoenix,ドキュメントシステム
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2003/12
- メディア: 単行本
- クリック: 10回
- この商品を含むブログ (70件) を見る