2009-10-05 43 views
1

我有一個POD文檔。現在,我想將該POD轉換爲像使用/描述一樣的解析節,並將其轉換爲字符串。如何獲取字符串中的Perl POD並將其打印在頁面中?

爲什麼不是pod2usage

這不會幫助我得到輸出字符串,但在STDOUT /文件。我強調的是「以字符串形式獲取」這一點,因爲如果長度超過屏幕長度,我想在「頁面」中顯示POD。 pod2usage不會在頁面打印出來:(

有人可以告訴我用這個目的哪個模塊?

回答

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

'IO :: String'對於各種事情都很有用。 – 2009-10-05 05:53:27

+1

事實上,如果您確定要在perl5.8或更高版本的環境中運行,則可以使用標量引用。 – Ether 2009-10-05 06:04:59

+0

由於Pod :: Text派生自Pod :: Simple,所以可以這樣說:'my $ string; $ parser-> output_string(\ $ string);'在你的Pod :: Text->新行的下面,然後你將得到你所有的輸出寫入$ string。 Pod :: Text比反引號/ qx {} IMO更有意義,因爲它是跨平臺的。 – Gaurav 2009-10-05 06:09:41

1

你不必做所有的吊艙解析自己;其中大部分已通過Pod::Simple完成。你可以寫一個簡短的子類來做你需要的任何事情。我掌握了掌握詳細信息的Perl的一章,但您也可以查看我的Pod::Perldoc::TOC模塊以查看簡短示例。

基本上,你處理= head1元素,但跳過那些不是概要。一旦你跑到右邊= head1,設置一個標誌並處理該部分,直到你遇到另一個= head1,此時你停止解析。您可以在= head1之間做任何你喜歡的事情,包括追加到變量。

相關問題