如何在字符串中获取Perl POD并在页面中打印?

时间:2009-10-05 05:15:41

标签: perl pod

我有一个POD文件。现在,我想将该POD转换为像使用/描述这样的解析部分,并将其转换为字符串。

为什么不pod2usage

这对我在字符串中输出但在STDOUT /文件中没有帮助。我强调“在字符串中获取它”这一点,因为如果长度超过屏幕长度,我想在“页面”中显示POD。 pod2usage不会在页面中打印它们:(

有人可以告诉我为此目的使用哪个模块吗?

3 个答案:

答案 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之间做任何你喜欢的事情,包括附加到变量。