Perl에서 생성 된 PERL 코드를 어떻게 예선 할 수 있습니까?
-
03-07-2019 - |
문제
Perl에 작성된 테스트 생성기가 있습니다. 시뮬레이터에 연결되는 테스트를 생성합니다. 이 테스트는 자체적으로 Perl로 작성되었으며 API를 통해 시뮬레이터에 연결됩니다. 생성 된 코드를 사람으로 읽을 수 있기를 원합니다. 즉, 제대로 들여 쓰기와 형식을 형성하고 싶습니다. 좋은 방법이 있습니까?
세부 사항은 팔로우하거나 아래의 실제 질문으로 건너 뛸 수 있습니다.
이것은 예입니다.
my $basic = ABC
TRIGGER => DELAY(
NUM => 500,
),
)
BASIC
my $additional = STATE_IS(
STATE => DEF,
INDEX => 0,
),
ADDITIONAL
명령을 원합니다 ABC
전화 후 500 개가 지연되면 (지금은 관련이 없습니다) &event
, 인덱스 0의 상태는입니다 DEF
. 때때로 나는 또한 Indeces 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의 모범 사례에 따라 멋지게 형식화됩니다. 이것을하는 좋은 방법이 있습니까?
해결책
나는 이것을 사용했다 :
use Perl::Tidy;
sub Format {
my $source = shift;
my $result;
Perl::Tidy::perltidy(
source => \$source,
destination => \$result,
argv => [qw(-pbp -nst)]
);
return $result;
}
다른 팁
펄리 코드는 깔끔 할뿐만 아니라 정말 아름답게 만듭니다. 현지 코딩 표준에 따라 쉽게 조정할 수 있습니다.
제휴하지 않습니다 StackOverflow