【问题标题】:How do I get Perl POD in string and print it in page?如何以字符串形式获取 Perl POD 并将其打印在页面中?
【发布时间】:2009-10-05 05:15:40
【问题描述】:

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

为什么不pod2usage

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

谁能告诉我使用哪个模块来实现这个目的?

【问题讨论】:

    标签: perl perl-pod


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • IO::String 对各种事情都有用。
      • 确实如此,但如果您确定要在 perl5.8 或更高版本的环境中运行,则可以只使用标量引用。
      • 由于 Pod::Text 派生自 Pod::Simple,您可以在 Pod::Text->new 行下方说:my $string; $parser->output_string(\$string);,然后您将得到所有输出到$字符串。 Pod::Text 比反引号/qx{} IMO 更有意义,因为它是跨平台的。
      • 我只使用 5.8.8 版本..我已经将所有输出都输出到一个字符串..然后只打印 POD 的一部分(例如:概要),我必须手动解析吗?或者是否有任何模块可以提供提取方法?
      • 这就是Pod::Select的准确描述^_^
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2011-05-05
        • 1970-01-01
        • 2015-01-03
        相关资源
        最近更新 更多