是否可以将pod代码转换为保存在变量中的方式,使其$=pod与pod2text一起使用时的行为类似于?
#!/usr/bin/env perl6
use v6;
use Pod::To::Text;
my $code = $*PROGRAM.slurp;
my $pod = $code.subst( / ^ .+ \n <?before '=begin pod'> /, '' );
# convert $pod so it works with pod2text like $=pod does
say pod2text $pod;
say "==============";
say pod2text $=pod;
=begin pod
=head1 NAME
Test pod
=head1 DESCRIPTION
This is a test.
=end pod
Run Code Online (Sandbox Code Playgroud)
该$=pod变量包含一个Array是(一个亚类的)的每个实例的值组成Pod::Block。因此,您需要重现该内容。
如果使用P6编译器编译某些P6代码,则应该自动编译其中的任何Pod,并且该$=pod变量会自动初始化为包含Pod编译的结果。使用Rakudo:
=begin foo
foo-text
=end foo
say $=pod;
Run Code Online (Sandbox Code Playgroud)
显示:
[Pod::Block::Named{:name("foo")}
Pod::Block::Para
foo-text
]
Run Code Online (Sandbox Code Playgroud)
浏览了相关的编译器模块(语法,操作,编译包装器)后,我怀疑需要花很多精力才能理解它。这种理解的结果可能是按原样使用其中一些代码的能力,但是我怀疑,至少在不对编译器代码进行某种程度的重构的情况下,您至少有同样的可能。
以下$pod内容也将被接受pod2text:
my $pod =
[Pod::Block::Named.new:
:name("foo"),
:contents[Pod::Block::Para.new:
:contents["foo-text"]]];
say $pod; # displays same result as for `$=pod` above
Run Code Online (Sandbox Code Playgroud)
大概您寻求的解决方案介于这些极端之间。