如何獲得POD部分到一個變量:如何將POD節獲取到字符串中?
pod2usage(-verbose => 99, -sections => "DESCRIPTION"); # Goes on STDOUT
=head1 DESCRIPTION
A description
=cut
我只是想分配DESCRIPTION
對STDOUT
而不是顯示它的變量。
我目前正在調查這種方式。它是複雜的,這是行不通的:
sub pod2scalar {
use File::Temp 'tempfile';
my ($fh, $filename) = tempfile(UNLINK => 1);
open OLDOUT, '>&STDOUT';
{
local *STDOUT;
open STDOUT, ">", $filename or warn "Can't open $filename: $!";
#pod2usage(@_); # Doesn't work... I don't know why...
print STDOUT "This is captured in \$str";
close STDOUT;
}
open STDOUT, '>&OLDOUT' or die "Can't restore stdout: $!";
close OLDOUT or die "Can't close OLDOUT: $!";
open $fh, "<", $filename or warn "Can't open $filename: $!";
my $str = do { local $/, <$fh> };
close $fh;
$str;
}
我不知道推來推去'@ _'是一個很好的做法。 – bessarabov
@bessarabov:爲什麼呢?我已經刪除了它,因爲它更簡潔,如果我只是在過程調用中添加新參數,但是操作'@ _'沒有任何傷害。畢竟,通過使用'shift'從數組中提取參數是非常普遍的做法,所以如果你能從'@ _'中移除*元素,那麼添加*就不會有問題! – Borodin
嗯...我從來沒有使用@_作爲一個正常的數組,我只用它作爲一個東西來訪問傳遞給子參數。現在我試圖構建一些因直接使用@_而中斷的示例,但我無法做到這一點。也許可以使用它,但我從來沒有見過這樣的用法。 – bessarabov