Perl スクリプトを編集する時,普通は Emacs に標準的に附属している perl-mode
を使います.しかし,この perl-mode は少し古いので最近の Perl5
の構文を利用するとインデントが崩れたりするなど,多少の不具合があります.
それに対して,cperl-mode は最近も継続的にメンテナンスされていて,
新しい機能も利用できるようになっていますので,是非利用しましょう.
なお,Emacs20 以降は cperl-mode.el
は,Emacs の標準配布の一部となりましたから,特別にインストールする必要はないでしょう.
ただし,最新の cperl-mode は Emacs-20 の拡張機能を利用しているため,Mule-2.3 などからは利用できません.私は, 以下のバージョンの cperl-mode を利用しています.
;; $Id: cperl-mode.el,v 2.16 1998/04/14 00:59:19 ilya Exp ilya $
入手したら適当なディレクトリにコピーして,~/.emacs
に次の設定を追加して下さい.
(autoload 'perl-mode "cperl-mode" "alternate mode for editing Perl programs" t)
この設定によって,標準の perl-mode の代わりに cperl-mode が使われるようになります.後は,cperl-mode のカスタマイズ用変数を好みに合わせて設定すれば良いでしょう. 例えば,私の設定は次のようになっています.
(setq cperl-indent-level 4) (setq cperl-continued-statement-offset 4) (setq cperl-comment-column 40)
広瀬さんの作成された perlplus.el を利用すると,Perl のシンボル(関数や変数)の名前の補完入力が使えるようになります.
入手したら適当なディレクトリにコピーして,~/.emacs
に次の設定を追加して下さい.
(add-hook 'cperl-mode-hook (lambda () (require 'perlplus) (define-key perl-mode-map "\M-\t" 'perlplus-complete-symbol) (perlplus-setup)))
このように設定すると,M-TAB で補完入力が起動されます.
少し大規模なプログラムの debug をする場合,Perl に附属している
Debugger が便利です.コマンドラインから
Debugger を呼び出す場合は,次のように
-d
オプションをつけて実行します.
perl -d
filename
また,Emacs から呼び出すことも出来ます.M-x perldb とすると, 以下のようなプロンプトが表示されるので,そこにファイル名とコマンドラインオプションを入力します.
Run perldb (like this): perl
しかし,わざわざファイル名をきちんと入力しなければいけないのは面倒なので, カレントバッファのスクリプトを対象として Debugger を起動するためのコマンドを作りました.
perl-debug.el
を適当なディレクトリにコピーして,次の設定を
~/.emacs
に追加して下さい.
(add-hook 'cperl-mode-hook (lambda () (require 'perl-debug) (perl-debug-set-coding-system) (define-key perl-mode-map "\C-cc" 'perl-debug-lint) (define-key cperl-mode-map "\C-cd" 'perl-debug)))
このように設定した場合,Perl スクリプトを編集中のバッファで C-c d とすると Debugger が起動されます.
なお,日本語(漢字)を含んでいるスクリプトを debug するためには,漢字コードを変数 perl-debug-coding-system にきちんと設定する必要があります.デフォルトの値は日本語 EUC になっていますので,それ以外の漢字コードを利用する場合は適切に変更して下さい.
Perl は変数や関数の宣言が必要ないので,スペルミスによる間違いがかなりの頻度で発生します.
Perl に-cw
オプションをつけて実行すると,
1度しか使われていない変数を検出してくれるので,
単純なスペルミスなどの間違いの殆んどが見つかります.
この機能もとても便利なので Emacs 上から使えるようにしてみました.
perl-debug.el を使えるように設定してから,
Perl スクリプトを編集中のバッファで C-c c として下さい.
Perl4 の場合は上述のような単純な検査しか出来ませんが,Perl5 の場合はより強力な構文検査を利用できます.次の指定を Perl スクリプトに加えてから構文検査してください.
use strict;
変数宣言やサブルーチンの宣言を強制したい場合は,次のコードをスクリプトに加えます.
use vars qw($scalar @array %hash); use subs qw(func1 func2);
この指定を加えると,宣言無しに大域変数やサブルーチンを定義すると警告されるようになります.
Perl のスクリプトを編集中に関数の説明を簡単に参照できたらいいなあと思ったので, そのためのコマンドを作成しました. インストールすると,C-h f 関数名 RET という簡単な手順で Perl 日本語 Info の関数説明部分を参照できるようになります.
[Top] / [Emacs Lisp Tips] / [Perl スクリプトを編集するための設定]