我有一个POD文件。现在,我想将该POD转换为像使用/描述这样的解析部分,并将其转换为字符串。
为什么不pod2usage
?
这对我在字符串中输出但在STDOUT /文件中没有帮助。我强调“在字符串中获取它”这一点,因为如果长度超过屏幕长度,我想在“页面”中显示POD。 pod2usage
不会在页面中打印它们:(
有人可以告诉我为此目的使用哪个模块吗?
答案 0 :(得分:2)
Pod::Usage,在pod2usage手册页的底部引用。
答案 1 :(得分:1)
来自Pod::Parser文档:
或者,也可以接受IO :: String对象作为输出文件句柄。
所以这是完全合法的:
#!/usr/bin/perl
use strict;
use IO::String;
use Pod::Text;
my $buffer;
my $io = IO::String->new($buffer);
my $parser= Pod::Text->new (sentence => 0, width => 78);
$parser->parse_from_file('/usr/share/perl5/Net/Jabber.pm',$io);
print $buffer;
另一方面,请记住,您可以使用反引号捕获任何命令的输出,例如
$text = `/usr/bin/pod2usage /usr/share/perl5/Net/Jabber.pm`;
为清晰起见,或qx{}
:
$text = qx{/usr/bin/pod2usage /usr/share/perl5/Net/Jabber.pm};
答案 2 :(得分:1)
您不必自己完成所有Pod解析;其中大部分已经使用Pod::Simple完成。您可以编写一个简短的子类来执行您需要的任何操作。我在Mastering Perl中有一章介绍了详细信息,但您也可以查看我的Pod::Perldoc::TOC模块,看一个简短的例子。
基本上,你处理= head1元素,但跳过那些不是SYNOPSIS的元素。一旦你遇到right = head1,设置一个标志并处理该部分直到你遇到另一个= head1,此时你停止解析。你可以在= head1之间做任何你喜欢的事情,包括附加到变量。