4

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 が他のモジュール (ビルトインであっても) のプロトタイプを見ないことです。つまり、これが関数呼び出しなのか定数なのかがわからず、推測する必要があります。順序を逆にすると、& のあいまいさがなくなりました。

ご指摘ありがとうございます。これを修正するパッチを作成できるかどうかを確認します。

4

1 に答える 1