我需要在perl文档中使用utf-8字符.如果我使用:
perldoc MyMod.pm
Run Code Online (Sandbox Code Playgroud)
我看到奇怪的人物.如果我使用:
pod2text MyMod.pm
Run Code Online (Sandbox Code Playgroud)
一切都好.
我使用Ubuntu/Debian.
$ locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=de_DE.UTF-8
Run Code Online (Sandbox Code Playgroud)
是否有关于在Pod中使用特殊字符的方法?
这是一个使用德国变音符号"Just a Test:äöüßÄÖ"的小例子:
$ perldoc perl/MyMod.pm
<standard input>:72: warning: can't find character with input code 159
<standard input>:72: warning: can't find character with input code 150
MyMod(3) User Contributed Perl Documentation MyMod(3)
NAME
MyMod.pm - Just a Test: äöüÃÃÃ
perl v5.10.0 2008-10-16 MyMod(3)
Run Code Online (Sandbox Code Playgroud) 我很长一段时间都是Perl程序员,但我在POD中的文档总是有问题.
当我在代码中使用POD注释时,代码很难阅读.当我在文件末尾使用POD注释时,存在文档与代码不同步的危险.
我想念一个类似于Java的文档样式.
/**
* @description
* ...
*/
Run Code Online (Sandbox Code Playgroud)
我寻找更简单,更直观的文档样式.有这样的事吗?
我有一个简单的POD文本文件:
$ cat test.pod
=encoding UTF-8
Münster
Run Code Online (Sandbox Code Playgroud)
它按照UTF-8编码,根据文件的这个文字十六进制转储:
00000000 3d 65 6e 63 6f 64 69 6e 67 20 55 54 46 2d 38 0a |=encoding UTF-8.|
00000010 0a 4d c3 bc 6e 73 74 65 72 0a |.M..nster.|
0000001a
Run Code Online (Sandbox Code Playgroud)
"ü"被编码为两个字节C3和BC.
但是,当我perldoc在文件上运行时,它将我可爱的格式化UTF-8字符转换为ASCII.
更重要的是,它正确地处理了将"ü"表示为"ue"的德语惯例.
$ perldoc test.pod | cat
TEST(1) User Contributed Perl Documentation TEST(1)
Muenster
perl v5.16.3 2014-06-10 TEST(1)
Run Code Online (Sandbox Code Playgroud)
它为什么这样做?
是否有一个额外的声明我可以放入我的文件以阻止它发生?
经过额外的调查后,App::perlbrew我发现不同之处在于拥有特定版本的Pod :: Perldoc.
perl-5.10.1 3.14_04 Muenster
perl-5.12.5 3.15_02 Muenster
perl-5.14.4 3.15_04 Muenster
perl-5.16.2 3.17 Münster …Run Code Online (Sandbox Code Playgroud) 我赞成一种文字编程风格,在他们记录的代码旁边有POD注释.不幸的是,这膨胀了代码,这不是非常Perlish ;-)我现在能找到的最好的方法是使用Dist :: Zilla和Pod :: Weaver一样:
package Foo;
#ABSTRACT: Foobar helper module for Foos
=method foo ( $bar, $doz )
Lorem ipsum hopladi and hoplada.
=cut
sub foo {
...
}
Run Code Online (Sandbox Code Playgroud)
人们可能会争论删除空行,但这也会降低可读性.有没有办法写更简洁,没有任何重复和不必要的语法,如下所示:
package Foo;
#ABSTRACT: Foobar helper module for Foos
#METHOD: Lorem ipsum hopladi and hoplada.
sub foo { # $bar, $doz
...
}
Run Code Online (Sandbox Code Playgroud)
并将此扩展到完整的POD:
=head1 NAME
Foo - Foobar helper module for Foos
=head1 METHODS
=head2 foo ( $bar, $doz )
Lorem ipsum hopladi and …Run Code Online (Sandbox Code Playgroud) 下载了ActiveState Perl V5.22.3(试过V5.24,结果相同),我无法运行perldoc!perldoc以'无效参数 - -R'响应.
这是我的命令窗口:
我没有运行脚本的问题 - 只是perldoc.
在此先感谢您的任何建议.
另请参阅:readdir的"0"如何在while条件下不是false?.(不重复;只是密切相关.)
它在文档中的哪个位置说测试readdir的定义性?例如,这段代码
#!/usr/bin/perl
use strict;
use warnings;
opendir my $dir, "/tmp" or die "$!";
while (my $file = readdir($dir)) {
print "$file\n";
}
closedir $dir;
Run Code Online (Sandbox Code Playgroud)
当运行B :: Deparse时:
use warnings;
use strict 'refs';
die "$!" unless opendir my $dir, '/tmp';
while (defined(my $file = readdir $dir)) {
do {
print "$file\n"
};
}
z.pl syntax OK
Run Code Online (Sandbox Code Playgroud)
我期待这种行为,但我找不到它的指定位置.在perlop的I/O运算符部分,它说
以下行是等效的:
while (defined($_ = <STDIN>)) { print; }
while ($_ = …
这是交易,
如果您使用过Aptana,Eclipse甚至Microsoft Expression Web编辑器,那么您已经看到它们具有Balloon Text或Intellisense弹出窗口,其中显示了内置和自定义对象,方法等的提示/信息.
他们通过JSDoc,PHPDoc,JavaDoc,RDoc等获取信息.
我想在Vim中获得这些功能,也可以实现为omnicompletion,因为Mac/GVim也支持气球文本.
我无法弄清楚如何在我的Perl文档中正确显示撇号.例如,文本'test'显示为âtestâ.
E<39> 也呈现为 â
I<'>S<'>E<apos>C<'>呈现为"'"(显然终端不是问题)F<'> 呈现为下划线 â我也尝试运行perldoc与-T,-n nroff并-n troff但没有了作用.运行-t固定的撇号问题,但也杀死所有其他文本属性.
我已经忍受了一段时间,但它真的开始让我恼火.如何才能正确显示它们?
我从阅读perldoc perlvar中发现,大约有一千行是对%ENV的帮助.有没有办法从命令行直接找到它?
在我的Windows机器上,我尝试了以下内容
perldoc ENV
perldoc %ENV
perldoc %%ENV
perldoc -r ENV (returns info about Use Env)
perldoc -r %ENV
perldoc -r %%%ENV
perldoc -r %%%%ENV (says No documentation found for "%ENV")
Run Code Online (Sandbox Code Playgroud)
实际上没有返回有关%ENV变量的信息.
我如何使用perldoc来了解%ENV,如果我不想通过成千上万的线进行眼睛grep?
我尝试了建议的"perldoc perlvar",然后键入/%ENV,但没有任何反应.
perl -v: This is perl, v5.8.0 built for MSWin32-x86-multi-thread
Run Code Online (Sandbox Code Playgroud)
虽然我已经询问了%ENV,但这也适用于任何一般术语,因此在下一次我不知道哪个部分时,知道%ENV在perlvar中这个例子将无法帮助我.
有没有办法让perldoc转储所有东西(呃)我可以grep输出?
我有这个 POD:
=head1 My code
=head2 check
Checks something.
Parameters:
=over 8
=item what to check.
=back
=cut
Run Code Online (Sandbox Code Playgroud)
podchecker不抱怨。perldoc显示这个:
My code
check
Checks something.
Parameters:
what to check.
Run Code Online (Sandbox Code Playgroud)
我希望“检查内容”行进一步缩进。
我需要如何更改我的 POD 以显示缩进的参数?有没有比=items更好的方法来做到这一点?
perldoc ×10
perl ×9
pod ×3
perl-pod ×2
apostrophe ×1
dist-zilla ×1
format ×1
indentation ×1
jsdoc ×1
phpdoc ×1
rdoc ×1
unicode ×1
utf-8 ×1
vim ×1