You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:05:20