Perltidyを使用して、いくつかの古い Perl ファイルを現在の好みに近いスタイルに再フォーマットしています。このスニペットで問題が発生しました:
Fcntl::S_IRUSR & $mode
Perltidyは、トークンの後のスペースを削除することを主張しているため、次のようになります。&
Fcntl::S_IRUSR &$mode
...私の意見では、これは目障りです。Perltid にその単一のスペースを放っておいてもらうにはどうすればよいですか? オプションを試して-fws
も無駄でした。
Perltidy 20101217 を使用していますが、これは明らかに最新バージョンです。
編集:
いくつかの追加の観察:
--indent-only
( ) オプションを使用して-io
も、前述のスペースは削除されません。次の同等のスニペットは、この問題の影響を受けません。
$mode & Fcntl::S_IRUSR
編集2:
&
当面は Perltidy の問題を回避できるように思われるため、演算子の引数の順序を逆にすることになりました。さらに、このアプローチでは、Perltidy が The Right Thing を実行するのに役立つ余分な括弧やその他のトークンを追加する必要はありませんが、長い目で見れば確かに混乱するでしょう。
アップデート:
この問題について、Perltidy の作成者である Steve Hancock に問い合わせました。彼の応答から:
私がチェックしたところ、問題は & がこの場合、関数呼び出しの印として誤ってトークン化されていることです。基本的な問題は、perltidy が他のモジュール (ビルトインであっても) のプロトタイプを見ないことです。つまり、これが関数呼び出しなのか定数なのかがわからず、推測する必要があります。順序を逆にすると、& のあいまいさがなくなりました。
ご指摘ありがとうございます。これを修正するパッチを作成できるかどうかを確認します。