Я пытаюсь найти комментарий # VERSION
в исходном файле perl. Затем я хочу вставить версию перед комментарием (или вместо того, чтобы иметь значение). Может кто-нибудь сказать мне правильный способ сделать это с PPI ?
до
use strict;
use warnings;
package My::Package;
# VERSION
...
после
use strict;
use warnings;
package My::Package;
our $VERSION = 0.1;# VERSION
...
сохранение # VERSION
в конечном результате необязательно
На самом деле у меня есть пара идей о том, как найти # VERSION, но одно из них является регулярным выражением сериализованного документа ppi, которое кажется неправильным, а другое использует find_first для Комментария, но если это не первое, то я ' Я не уверен, что делать.
Обновленный код Кажется, это ближе к правильному решению, так как он смотрит только на комментарии. но я не уверен, как использовать или создать новую переменную.
#!/usr/bin/env perl
use 5.012;
use strict;
use warnings;
use PPI;
my $ppi = PPI::Document->new('test.pm');
my $comments = $ppi->find('PPI::Token::Comment');
my $version = PPI::Statement::Variable->new;
foreach ( @{$comments} ) {
if ( /^\s*#\s+VERSION\b$/ ) {
$_->replace($version);
}
}
UPDATE
Ответ на этот вопрос стал основой для DZP :: OurPkgVersion