私はルーズな perler であるので、コードが大変に汚い。Perl にはほぼ標準とも言っていい、Perl::Tidy (perltidy) というコード整形ツールがあるが、ちょろっと使っただけでは、改行を潰されたりするのが自分のコーディングスタイルに合わないので使っていなかった。
今回、真面目にオプションを調べて自分の設定ファイル(.perltidyrc)を作ってみました。
これにより回避できたのは、以下のような改行の仕方が潰されてしまう事。
保存したい改行
$val eq 'value'
and &check($val)
or return
;
$res = sprintf( 'some %s format',
$val,
);
標準のオプションで整形したコード
$val eq 'value' and &check($val)
or return;
$res = sprintf( 'some %s format', $val, );
改行を潰さない .perltidyrc の内容
改行に関しては赤太字の所がポイントで、後はお好みで。
-enc=utf8 #文字コードはUTF-8(しかしwarning出る)
-ole=unix #改行は LF
-et=4 #スペース4個分はタブに置き換えて
--closing-token-indentation=1 #配列指定時などに、終了カッコを開始と同じ位置までインデント
--nospace-for-semicolon #forループの指定のセミコロンの前にスペースを置かない
--nooutdent-long-quotes #インデントされ過ぎた文字列があっても引き戻して来ない
--nooutdent-long-lines #インデントされ過ぎた行があっても引き戻して来ない
--tight-secret-operators
#0+$val などの特定の表現のときは 0 + $val の様なスペースを空けない
--minimum-space-to-comment=2 #行末コメントとコードの間のスペース
--closing-side-comments
#ループやsub の閉じ } の後に「 ## end sub ...」等と付ける(デバッグ用)
--maximum-fields-per-table=1 #配列要素の指定を横に並べる数
--freeze-newlines #既にある改行コードは削除しない
--break-at-old-comma-breakpoints #カンマの後の改行を変更しない
--check-syntax #整形後 perl -c -T でチェック
--backup-and-modify-in-place #ファイルを書き換えて、整形前のファイルを.bak で保存する