Pod::Usage: `=begin :text`/`=end :text` 搞乱了格式
Pod::Usage: `=begin :text`/`=end :text` messes up formatting
我有一些 POD 文档,其中的一个部分应该在 Latex(使用 pod2latex
)和普通 text/man 中以不同方式呈现。为此,我有一个 =begin :text
/=end :text
部分。
现在,我想在命令行上显示 POD 的各个部分(使用 Pod::Usage
)。这就是问题所在: :text
块之后的所有部分在此模式下出现乱码。
这是一个最小的例子:
pod2usage(-verbose => 99, -sections => 'Two');
=head1 One
=begin text
For I<non-Latex> only.
=end text
=head1 Two
C<Formatting> all I<messed> up!
输出:
Two:
"Formatting"*messed* all up!
请注意打印整个 POD(pod2usage(-verbose => 2);
或仅 运行 perldoc
在文件上)工作正常。
我已经尝试了我能找到的所有 Pod::Usage
选项(包括选择不同的 Formatter class),但现在无济于事。如果我从块中删除 :text
(纯 =begin
/=end
),它会随着部分选择而正常出现,但这实际上是一个 POD 语法错误,并且 perldoc
在渲染整个 POD 时抱怨它。
注意:我的 Perl 已经很旧了 (v5.18.2),但我仍然坚持使用那个版本。
这看起来像是 Pod::Usage
中的错误。我通过查看源代码找到了解决方法。似乎 Pod::Simple
的内部堆栈由于缺少子 cmd_for
而变得混乱。通过手动添加虚拟子 cmd_for
它似乎可以工作:
use feature qw(say);
use strict;
use warnings;
use Pod::Usage;
{
no warnings 'once';
*Pod::Usage::cmd_for = sub { };
}
pod2usage(-verbose => 99, -sections => 'Two');
=head1 One
=begin text
For I<non-Latex> only.
=end text
=head1 Two
C<Formatting> all I<messed> up!
输出:
Two:
"Formatting" all messed up!
我有一些 POD 文档,其中的一个部分应该在 Latex(使用 pod2latex
)和普通 text/man 中以不同方式呈现。为此,我有一个 =begin :text
/=end :text
部分。
现在,我想在命令行上显示 POD 的各个部分(使用 Pod::Usage
)。这就是问题所在: :text
块之后的所有部分在此模式下出现乱码。
这是一个最小的例子:
pod2usage(-verbose => 99, -sections => 'Two');
=head1 One
=begin text
For I<non-Latex> only.
=end text
=head1 Two
C<Formatting> all I<messed> up!
输出:
Two:
"Formatting"*messed* all up!
请注意打印整个 POD(pod2usage(-verbose => 2);
或仅 运行 perldoc
在文件上)工作正常。
我已经尝试了我能找到的所有 Pod::Usage
选项(包括选择不同的 Formatter class),但现在无济于事。如果我从块中删除 :text
(纯 =begin
/=end
),它会随着部分选择而正常出现,但这实际上是一个 POD 语法错误,并且 perldoc
在渲染整个 POD 时抱怨它。
注意:我的 Perl 已经很旧了 (v5.18.2),但我仍然坚持使用那个版本。
这看起来像是 Pod::Usage
中的错误。我通过查看源代码找到了解决方法。似乎 Pod::Simple
的内部堆栈由于缺少子 cmd_for
而变得混乱。通过手动添加虚拟子 cmd_for
它似乎可以工作:
use feature qw(say);
use strict;
use warnings;
use Pod::Usage;
{
no warnings 'once';
*Pod::Usage::cmd_for = sub { };
}
pod2usage(-verbose => 99, -sections => 'Two');
=head1 One
=begin text
For I<non-Latex> only.
=end text
=head1 Two
C<Formatting> all I<messed> up!
输出:
Two:
"Formatting" all messed up!