使用方括号<
和>
时,我从Pod::Markdown
获取正确行为时遇到问题。例如:
use strict;
use warnings;
use Data::Dump;
use Pod::Markdown;
my $str = "=head1 OPTIONS\n\n=over 4\n\n=item B<< --file=<filename> >>\n\nFile name \n\n=back\n";
my $parser = Pod::Markdown->new;
my $markdown;
$parser->output_string( \$markdown );
$parser->parse_string_document($str);
dd $markdown;
提供输出:
"# OPTIONS\n\n- **--file=<filename>**\n\n File name \n"
哪个给出了
在GitHub上。因此,<filename>
标记内的部分**
可能被视为HTML标记,因此未显示。
期望的输出将是
"# OPTIONS\n\n- **--file=\<filename\>**\n\n File name \n"
括号<
和>
应使用反斜杠进行转义。
更新
似乎问题不仅限于双星序列。我根据这个更新了问题..
答案 0 :(得分:1)
目前,解决方法似乎是在后处理步骤中插入反斜杠。例如:
$parser->output_string( \$markdown );
$parser->parse_string_document($str);
fix_escape_chars(\$markdown);
sub fix_escape_chars {
my ($str) = @_;
$$str =~ s/(?<!\\)>/\\>/g;
$$str =~ s/(?<!\\)</\\</g;
}
这似乎运作良好..(它甚至可以在与this question中声明的内容相反的URL内部工作)..
答案 1 :(得分:1)
Pod :: Markdown 3.000已发布并修复此问题。
并非所有降价处理器都会识别反斜杠转义<
个字符,因此我遵循Markdown spec建议将&
和<
转换为html实体(&
和<
)