我正在寻找可能包含正则表达式和注释的 perl 代码行,我需要捕获所有内容,直到出现注释。所以我想要所有字符直到 # 但我有兴趣捕获 # 例如,如果该行是:
if ($line=/\#/) { #captures lines with '#'
我想捕捉:
if ($line=/\#/) {
试试这个:
use PPI;
my $ppi = PPI::Document->new('source.pl');
my $source = '';
for my $token ( @{ $ppi->find("PPI::Token") } ) {
last if $token->isa("PPI::Token::Comment");
$source .= $token;
}
print $source;
这应该可以处理除 here-docs 之外的几乎所有内容。如果你需要处理这些,首先复制 PPI::Document::serialize 并修改它以停止第一个评论。