perldoc无法显示POD文件中=begin perl与=end perl间内容的问题
问题描述
我有如下POD文件:
=head1 用Mojolicious::Plugin::RevealJS制作专业幻灯片 =head2 安装并运行Mojolicious服务器 圣诞老人的小精灵遇到了个问题:他得快速写一份演示文稿,给一群新来的小精灵看,这项任务还是圣诞老人亲自发邮件布置的。 小精灵去Metacpan上找模块,发现了Mojolicious::Plugin::RevealJS。 他飞快敲了这些命令: C<cpanm Mojolicius Mojolicious::Plugin::RevealJS> 接着他用这条命令生成一个Mojo Lite应用: C<mojo generate lite-app slide_show> 因为小精灵学过古老的技艺,他用vim打开新文件,粘贴了这段代码: =begin perl use Mojolicious::Lite -signatures; app->static->paths(['.']); plugin 'RevealJS'; any '/' => { template => 'presentation', layout => 'revealjs' }; app->start; =end perl
执行perldoc t.pod命令时,=begin perl与=end perl之间的代码无法显示,不知道问题出在哪。
解决方案
问题出在=begin perl是格式专属的POD块,perldoc默认仅渲染通用POD内容,不会处理这类自定义格式块。有三种解决方式:
- 改用POD原生代码块标记
=verbatim替换=begin perl和=end perl:
=verbatim use Mojolicious::Lite -signatures; app->static->paths(['.']); plugin 'RevealJS'; any '/' => { template => 'presentation', layout => 'revealjs' }; app->start; =cut
=verbatim是POD标准的代码块语法,perldoc会直接原样显示其中内容。
- 若要保留
=begin perl,调用perldoc时指定启用该格式:
perldoc -F perl t.pod
-F参数用于告诉perldoc渲染指定格式的块,这里指定perl即可显示对应代码。
- 将多行代码拆分为多个
C<>标记,但这种方式对多行代码不够友好,不推荐使用。
内容的提问来源于stack exchange,提问作者Dragos Trif
相关产品推荐
相关产品推荐

