我有一個POD文檔。現在,我想將該POD轉換爲像使用/描述一樣的解析節,並將其轉換爲字符串。如何獲取字符串中的Perl POD並將其打印在頁面中?
爲什麼不是pod2usage
?
這不會幫助我得到輸出字符串,但在STDOUT /文件。我強調的是「以字符串形式獲取」這一點,因爲如果長度超過屏幕長度,我想在「頁面」中顯示POD。 pod2usage
不會在頁面打印出來:(
有人可以告訴我用這個目的哪個模塊?
我有一個POD文檔。現在,我想將該POD轉換爲像使用/描述一樣的解析節,並將其轉換爲字符串。如何獲取字符串中的Perl POD並將其打印在頁面中?
爲什麼不是pod2usage
?
這不會幫助我得到輸出字符串,但在STDOUT /文件。我強調的是「以字符串形式獲取」這一點,因爲如果長度超過屏幕長度,我想在「頁面」中顯示POD。 pod2usage
不會在頁面打印出來:(
有人可以告訴我用這個目的哪個模塊?
Pod::Usage,這是對pod2usage男人頁面底部引用。
從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};
你不必做所有的吊艙解析自己;其中大部分已通過Pod::Simple完成。你可以寫一個簡短的子類來做你需要的任何事情。我掌握了掌握詳細信息的Perl的一章,但您也可以查看我的Pod::Perldoc::TOC模塊以查看簡短示例。
基本上,你處理= head1元素,但跳過那些不是概要。一旦你跑到右邊= head1,設置一個標誌並處理該部分,直到你遇到另一個= head1,此時你停止解析。您可以在= head1之間做任何你喜歡的事情,包括追加到變量。
'IO :: String'對於各種事情都很有用。 – 2009-10-05 05:53:27
事實上,如果您確定要在perl5.8或更高版本的環境中運行,則可以使用標量引用。 – Ether 2009-10-05 06:04:59
由於Pod :: Text派生自Pod :: Simple,所以可以這樣說:'my $ string; $ parser-> output_string(\ $ string);'在你的Pod :: Text->新行的下面,然後你將得到你所有的輸出寫入$ string。 Pod :: Text比反引號/ qx {} IMO更有意義,因爲它是跨平臺的。 – Gaurav 2009-10-05 06:09:41