Perl コードを整形

書き換えるのは空白だけです。シジル、コメント、正規表現、ヒアドキュメント、POD は入力どおりに戻ります。レイアウト専用のフォーマッターであり、Perl::Tidy ではなく、構文の検証や修復は行いません。

ブラウザ内でローカルに実行
コピー

ブラウザで Perl コードを整形する方法

Perl のコードを貼り付けると、同じプログラムを一貫したインデント、1 行 1 文、選択した波かっこスタイル、任意の行折り返しで返します。書き換えるのはトークン間の空白だけです。シジル、コメント、正規表現、ヒアドキュメント、POD、添字はバイト単位でそのままコピーされるため、出力は同じ Perl プログラムのまま読みやすくなります。

フォーマッターはこのブラウザタブ内だけで動作し、コードはアップロードされません。レイアウト専用のフォーマッターであり、Perl::Tidy でも構文チェッカーでもありません。コンパイル・検証・修復は行わず、壊れたコードは壊れたまま、整った見た目で返ります。

  1. Perl コードを入力欄に貼り付け、「Perl コードを整形」を押すか Ctrl/⌘+Enter を押します。実行のたびに前回の結果が置き換わります。
  2. インデント(タブまたは 2・3・4・8 スペース)、保持する空行の数、波かっこのスタイル、長い行を 80 文字か 120 文字で折り返すかを選びます。
  3. 「コピー」で結果を取得し、「クリア」で次のコードの前に両方の領域を空にします。
  4. 折り返しはカンマの後だけで行われ、継続行はちょうど 1 レベル深くインデントされます。長さにかかわらず 1 文を 1 行に保つ場合は「折り返しなし」を選びます。

フォーマッターが変えるもの — 変わらないもの

フォーマッターが変えるもの

整形とは空白の書き換えです。出力のトークン列は入力と完全に同一で、それが壊れやすい部分を守ります。シジル $・@・%、# から行末までのコメント、/^Error: (\d+)/ のような正規表現や s/#/\#/g のような置換、=~ と !~ 演算子、-> のデリファレンス連鎖、$h{a} や $list[0] のようなハッシュ・配列の添字、クォート演算子(q, qq, qw, qx, qr, m, s, tr, y)、本体を含むヒアドキュメント、POD ブロック、__END__/__DATA__ セクションです。

すべてのトークンを原文のままコピーするため、黙って書き換わることはありません。文字列の中身、正規表現パターン、コメントは入力どおりに戻ります。確認方法は簡単で、整形後のコードは入力と同じ文字を含み、空白の位置だけが変わっています。

各オプションの実際の動作

インデントは波かっこで開くブロックに適用されます。タブまたは 2・3・4・8 スペースから選びます。空行は指定した上限までに切り詰められ、完全に削除するかすべて保持するかを選べます。波かっこのスタイルは開き波かっこの位置を決めます。sub や if、while などと同じ行に置く一般的な Perl の書き方(K&R)、単独行に置く(Allman)、同じ行に置きつつ閉じ波かっこの後で else と elsif を新しい行に移す、のいずれかです。

折り返しがトークンを途中で切ることはありません。行が指定の長さを超えると、カンマの後で改行し、継続行はちょうど 1 レベル深くインデントされます。収まる範囲の 1 行 map・grep・sort ブロックはそのまま残り、それ以外は独立した行に展開されます。

できないこと

このフォーマッターは perl -c を実行しません。構文チェック、モジュール解決、BEGIN ブロックの評価、エラー報告は行いません。閉じていない引用符、欠けたセミコロン、余分な波かっこがあれば、出力にもその問題が残ります。コードの修正はリンターやインタプリタの仕事であり、レイアウト処理の役割ではありません。

プログラムの再構成も行いません。文の並べ替えや式の書き換えは行わず、等価な 2 つの書き方のどちらが良いかについても関与しません。元のコードのコピーを保管し、通常の整形済みファイルと同じように結果を比較してください。

最近使ったツール: