You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Perl::Tidy始终将多行函数调用的闭括号单独换行?

让Perltidy始终将多行函数调用的闭括号单独成行的配置问题

我希望Perltidy始终将多行函数调用的闭括号放在单独一行。使用哈希风格参数时,它的表现符合预期:

my $test = mysprintf(
    one => "(void)find_threadsv(%s);",
    two => cstring( $threadsv_names[ $op->targ ] )
);

但使用列表参数时,它的行为会根据参数长度出现不一致的情况:

# 内容可放在单行,没问题
my $test =
  mysprintf( "(void)find_thread;", cstring( $threadsv_names[ $op->targ ] ) );

# 拆分为两行,但闭括号留在最后一行,不符合需求
my $test =
  mysprintf( "(void)find_threadsv(%s);",
    cstring( $threadsv_names[ $op->targ ] ) );

# 加长第一个参数后,行为恢复正常
my $test = mysprintf(
    "(void)find_threadfdfdfdfffdfdfdfddsv(%s);",
    cstring( $threadsv_names[ $op->targ ] )
);

# 参数再长一些,行为又异常
my $test = mysprintf( "(void)find_threadfdfdffefdfdfdfddfffdfdfdfddsv(%s);",
    cstring( $threadsv_names[ $op->targ ] ) );

第一种情况(内容能放在单行)我可以理解,但后续随着参数长度变化,它的行为在异常和正常之间反复切换。

这种情况在默认设置(最新版Perl::Tidy)和我尝试过的多种.perltidyrc配置下都会出现,比如:

--vertical-tightness=0
--vertical-tightness-closing=0

这是Perltidy的Bug,还是我遗漏了某些关键配置?

编辑补充:我找到一个有帮助的选项,它不会自动调整格式,但如果手动在函数调用括号内按需求添加换行,它不会破坏已有的格式:

--keep-old-breakpoints-after='w('

内容的提问来源于stack exchange,提问作者Ecuador

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:18:26