6

次のような長い if ステートメントをフォーマットするように perltid を設定するにはどうすればよいですか:

if (
    ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or
    ('hello world' =~ /world/ and 6 = 3 * 2 * 1)
) {
    print "hello\n";
}

またはこのように

if (
    ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6)
    or ('hello world' =~ /world/ and 6 == 3 * 2 * 1)
) {
    print "hello\n";
}

Edit1: perltidyrc

--maximum-line-length=100
--indent-columns=4
--default-tabsize=4
--continuation-indentation=4
--closing-token-indentation=0

--no-indent-closing-brace

--paren-tightness=2
--square-bracket-tightness=2
--block-brace-tightness=0

--trim-qw

--nospace-terminal-semicolon
--nospace-for-semicolon

--indent-spaced-block-comments
--ignore-side-comment-lengths

--cuddled-else

--no-opening-brace-on-new-line
--no-opening-sub-brace-on-new-line
--no-opening-anonymous-sub-brace-on-new-line
--no-brace-left-and-indent

--blanks-before-comments
--blank-lines-before-subs=1
--blanks-before-blocks
--maximum-consecutive-blank-lines=1

Edit2: アイデアは、最初の行(と最後の行の後に改行)を入れること{です。これが不可能な場合は、より良い書式設定のための他の提案をいただければ幸いです。

4

3 に答える 3

4

perltidy のデフォルトのスタイルは、可能であればPerl スタイルガイドに従うことです。この出力は次のようになります。

if (   ( 'this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6 )
    or ( 'hello world' =~ /world/ and 6 == 3 * 2 * 1 ) )
{
    print "hello\n";
}

中かっこは、新しい行にあるかどうかに関係なく制御できます。括弧の締め具合を制御できます。ただし、コード ブロック内の括弧の改行を制御することはできません。

デフォルトのスタイルは、目的の出力にできるだけ近いものです。

于 2012-11-15T11:00:11.430 に答える
2

不快なほど長い場合、1 つのアイデアは、各行の最大長を で制限することです-l=n。ここnで、 は各行の最大長です。

$ cat perltidy_test.pl
if (
    ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or('hello world' =~ /world/ and 6 = 3 * 2 * 1)
) {
    print "hello\n";
}

$ perltidy -l=60 perltidy_test.pl
$ cat pertidy_test.pl.tdy
if (
    (
        'this is an example' =~ /an.*example/
        and 1 * 2 * 3 == 6
    )
    or ( 'hello world' =~ /world/ and 6 == 3 * 2 * 1 )
  )
{
    print "hello\n";
}
于 2012-11-15T11:08:14.547 に答える
0

試す

$ perltidy -bli -wba='or' perltidy_test.pl

この例ではうまくいきます...

于 2012-11-15T14:58:42.447 に答える