我试图# 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 doc 的正则表达式,看起来不正确,另一个是在评论上使用 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);
}
}
更新
这个问题的答案成为了DZP::OurPkgVersion的基础