gpt4 book ai didi

perl - 如何美化 Perl 生成的 Perl 代码?

转载 作者:行者123 更新时间:2023-12-04 13:01:52 30 4
gpt4 key购买 nike

我有一个用 Perl 编写的测试生成器。它生成连接到模拟器的测试。这些测试本身是用 Perl 编写的,并通过其 API 连接到模拟器。我希望生成的代码是人类可读的,这意味着我希望它能够正确缩进和格式化。有什么好的方法吗?

详细信息如下,或者您可以跳到下面的实际问题。

这是一个例子:


my $basic = ABC
TRIGGER => DELAY(
NUM => 500,
),
)
BASIC

my $additional = STATE_IS(
STATE => DEF,
INDEX => 0,
),

ADDITIONAL

我想要命令 ABC在我调用 &event 后以 500 的延迟执行(单位现在不相关) ,索引 0 的状态为 DEF .有时我还想等待索引 1、2、3 等...

只有一个索引我想在我的测试中看到这个:

&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
),
)

对于两个indeces,我想看看:

&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 1,
),
),
),
)

所以基本上我要添加一个 block :

TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),

对于每个索引,索引号都会更改。

这是我的做法:

for $i (0..$num_indeces) {
# update the index number
$additional =~ s/(INDEX\s*=>\s*)\d+,/$1 $i,/;

$basic =~ s/(
(\),\s*) # capture sequences of ),
+ # as many as possible
\)\s* # end with ) without a ,
} )/$additional $1/sx; # replace with the additional data

这是实际问题

这里的问题是代码缩进很差。我想运行结果 $basic通过这样的美化词:
&prettify($basic, "perl");

这将根据 Perl 的最佳实践很好地格式化它。有什么好的方法可以做到这一点吗?

最佳答案

PerlTidy使您的代码不仅整洁,而且非常漂亮。您可以根据本地的编码标准轻松调整它。

关于perl - 如何美化 Perl 生成的 Perl 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806727/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com