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

发布于 2024-08-06 13:42:45 字数 407 浏览 8 评论 0原文

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

为什么不使用pod2usage

这并不能帮助我获取字符串中的输出,而是 STDOUT/文件中的输出。我强调“将其放入字符串”,因为如果长度超过屏幕长度,我想在“页面”中显示 POD。 pod2usage 不会在页面中打印它们:(

有人能告诉我吗我应该使用哪个模块来实现此目的?

I have a POD document. Now, I want to convert that POD to a parsed section like usage/description and get it in a string.

Why not pod2usage?

This doesn't help me to get the output in string but in STDOUT/file. I am stressing on the point "getting it in string", because I want to display the POD in "pages" if the length exceeds screen length. pod2usage doesn't print them in pages :(

Can somebody tell me which module to use for this purpose?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜心 2024-08-13 13:42:45

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

Pod::Usage, which is referenced on the bottom of the pod2usage man page.

梦在深巷 2024-08-13 13:42:45

来自 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};

From the Pod::Parser documentation:

Alternatively, an IO::String object is also accepted as an output file handle.

So this is perfectly legal:

#!/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;

On the other hand, remember that you can capture the output of any command using backticks, e.g.

$text = `/usr/bin/pod2usage /usr/share/perl5/Net/Jabber.pm`;

or qx{} for clarity:

$text = qx{/usr/bin/pod2usage /usr/share/perl5/Net/Jabber.pm};
橪书 2024-08-13 13:42:45

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

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

You don't have to do all of the Pod parsing yourself; most of it is done already with Pod::Simple. You can write a short subclass to do whatever you need. I have a chapter in Mastering Perl that goes into the details, but you can also look at my Pod::Perldoc::TOC module to see a short example.

Basically, you handle the =head1 elements, but skip the ones that aren't SYNOPSIS. Once you run into the right =head1, set a flag and process the section until you run into another =head1, at which point you stop parsing. You can do anything you like between the =head1's, including appending to a variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文