为了标记perl文件,我使用了PPI。但是,似乎没有正确地标记出来。我正在使用下面的代码来标记文件:
my $file_name = shift @ARGV;
use PPI;
use PPI::Dumper;
my $Document = PPI::Document->new($file_name);
my $Dumper = PPI::Dumper->new($Document);
$Dumper->print;
__END__下面是正在被标记的perl文件:
my $name = 'Foo';
my $message = <<'END_MESSAGE';
Dear $name,
this is a message I plan to send to you.
regards
the Perl Maven
END_MESSAGE
print $message;我得到以下输出:
PPI::Document
PPI::Statement::Variable
PPI::Token::Word 'my'
PPI::Token::Whitespace ' '
PPI::Token::Symbol '$name'
PPI::Token::Whitespace ' '
PPI::Token::Operator '='
PPI::Token::Whitespace ' '
PPI::Token::Quote::Single ''Foo''
PPI::Token::Structure ';'
PPI::Token::Whitespace '\n'
PPI::Token::Whitespace ' \n'
PPI::Statement::Variable
PPI::Token::Word 'my'
PPI::Token::Whitespace ' '
PPI::Token::Symbol '$message'
PPI::Token::Whitespace ' '
PPI::Token::Operator '='
PPI::Token::Whitespace ' '
PPI::Token::HereDoc '<<'END_MESSAGE''
PPI::Token::Structure ';'
PPI::Token::Whitespace '\n'
PPI::Token::Whitespace ' \n'
PPI::Statement
PPI::Token::Word 'print'
PPI::Token::Whitespace ' '
PPI::Token::Symbol '$message'
PPI::Token::Structure ';'
PPI::Token::Whitespace '\n'有任何方法可以获得整个合同文件的价值吗?
发布于 2019-11-19 07:55:33
根据文档,heredoc方法提供了here-doc的内容:
my $Document = PPI::Document->new($file_name);
my @heredoc = $Document->find_first('PPI::Token::HereDoc')->heredoc;
say join "", @heredoc;输出
Dear $name,
this is a message I plan to send to you.
regards
the Perl Mavenhttps://stackoverflow.com/questions/58927770
复制相似问题