end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

perlのコーディング規約? cperl-mode perltidy perlstyle

emacs + cperl-mode

perlを書く場合、私を含めて多くの人がemacs(またはmeadow) + cperl-mode を利用していると思います。(emacs20 以降、cperl-mode.elはemacs の標準配布となったそうです)

私の周りも emacs + cperl-mode でperlでの開発を行っている為、インデント等の配置はどのメンバーが書いたものであっても同様です。
ちなみに .emacsでcperl-modeの設定は次のようにしています。

;cperl-modeの設定
(autoload 'perl-mode "cperl-mode" "alternate mode for editing Perl programs" t)
(setq auto-mode-alist
      (append '(("\\.\\([pP][Llm]\\|al\\|cgi\\|t\\)$" . cperl-mode))
              auto-mode-alist ))
(add-hook 'cperl-mode-hook
	  (lambda ()
	    (setq cperl-font-lock t)
	    (cperl-set-style "PerlStyle")))

perltidy

perlアプリケーションの一部の実装を外部へ委託する場合、emacs + cperl-mode の環境を使用してもらえない場合があります。(emacsは初めて使う人に優しくないのかもしれません)

そのような場合、Perlソース整形ツールであるperltidyを使用してもらいます。
http://perltidy.sourceforge.net/

linuxだけでなくwin (active perl)でも利用できますが、perltidyのインストール方法やsrc整形の威力はいろんな所で紹介されているので、ここでは触れませんが、私の場合、.emacsに設定を追加することで、M-x perltidy-region でmeadowからperltidyを利用できるようにしています。

(defun perltidy-region ()
  "Run perltidy on the current region."
  (interactive)
  (save-excursion
    (shell-command-on-region (point) (mark) "perltidy.bat -q" nil t)))
(defun perltidy-defun ()
  "Run perltidy on the current defun."
  (interactive)
  (save-excursion (mark-defun)
		  (perltidy-region)))

また、perltidyでは、.perltidyrc を作成することで、独自のsrc整形をできるそうです。

perltidy-mode

ところが今頃になって、perltidy-modeの存在をしりました。

http://search.cpan.org/dist/perltidy-mode/

どうやら、emacsperlを保存するたびにperltidyを実行するそうです。
インストール方法や .emacsの設定方法は perltidy-modeのREADMEや次のurlを参考が参考になります。

http://googlewhacks.blogspot.com/2007/05/emacs-perltidy-mode.html

私のmeadowではうまく動作しませんでしたが、すぐに必要でもないので、原因は時間があるときにでも調べます。

perldoc perlstyle

更に今頃になって、perldoc perlstyleの存在をしりました。

http://perldoc.perl.org/perlstyle.html
http://perldoc.jp/docs/perl/5.8.0/perlstyle.pod

コードレイアウトについては、私の周りの中でも意見が分かれることがよくありますが、きちんと明文化されていたのですね。