2

我有一个 POD 文件。现在,我想将该 POD 转换为已解析的部分,如用法/描述,并将其放入字符串中。

为什么不pod2usage呢?

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

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

4

3 回答 3

2

Pod::Usage,在 pod2usage 手册页底部引用。

于 2009-10-05T05:29:52.650 回答
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};
于 2009-10-05T05:42:18.337 回答
1

您不必自己完成所有 Pod 解析;大部分已经用Pod::Simple完成了。您可以编写一个简短的子类来做您需要的任何事情。我在 Mastering Perl 中有一章详细介绍了细节,但您也可以查看我的Pod::Perldoc::TOC模块以查看一个简短示例。

基本上,您处理 =head1 元素,但跳过那些不是 SYNOPSIS 的元素。一旦遇到正确的 =head1,设置一个标志并处理该部分,直到遇到另一个 =head1,此时您停止解析。您可以在 =head1 之间做任何您喜欢的事情,包括附加到一个变量。

于 2009-10-05T22:36:00.877 回答