我有一个用Perl编写的测试生成器。它生成连接到模拟器的测试。这些测试本身是用Perl编写的,并通过其API连接到模拟器。我希望生成的代码可读性好,这意味着我希望它被正确缩进和格式化。有没有好的方法来实现这一点?
下面是详细信息,或者您可以直接跳转到实际问题:
所以基本上我正在添加一块:
下面是详细信息,或者您可以直接跳转到实际问题:
my $basic = ABC
TRIGGER => DELAY(
NUM => 500,
),
)
BASIC
my $additional = STATE_IS(
STATE => DEF,
INDEX => 0,
),
ADDITIONAL
当我调用&event
时,我希望延迟500个单位(目前不涉及单位),并执行命令ABC
,同时索引0的状态为DEF
。有时我还想等待1、2、3等索引。
如果只有一个索引,我想在我的测试中看到这个:
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
),
)
我想要查看两个索引:
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 1,
),
),
),
)
所以基本上我正在添加一块:
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最佳实践对其进行格式化?