似乎使用perldoc perl给出了例如perlre,perlvar等的列表.
这是查找概述或教程或参考手册部分可用列表的最佳位置吗?还有另一个更好的清单吗?
根据Pod :: Usage的文档,pod2usage(-verbose => 2)"整个手册页被打印".但是,在某些情况下,将显示脚本的perl源代码,而不是正确格式化的联机帮助页.
这是一个例子:
use Pod::Usage qw(pod2usage);
pod2usage(-verbose => 2);
__END__
=head1 NAME
Minimal example
=head1 SYNOPSIS
This is the synopsys section.
=cut
Run Code Online (Sandbox Code Playgroud)
运行脚本:
$ perl test.perl
You need to install the perl-doc package to use this program.
use Pod::Usage qw(pod2usage);
pod2usage(-verbose => 2);
__END__
=head1 NAME
Minimal example
=head1 SYNOPSIS
This is the synopsys section.
=cut
Run Code Online (Sandbox Code Playgroud) 我现在正在学习perl,我发现perldoc是一个非常方便的工具.
最初perldoc使用'less'作为默认页面查看器.没关系.但最近perldoc使用'more'作为默认页面查看器.
现象:1.男人仍然使用'少'.2. env | grep -Ei'perl | view | man'没有任何线索.
我读过,perldoc perldoc但我不知道我在过去做了什么错误导致这种沮丧的情况.我的要求可能看起来很愚蠢:我怎样才能恢复默认的perldoc查看器,即'less'?
我使用archlinux i686,openbox,xterm.谢谢.
我最近接触过一些Perl代码,它的某些方面对我来说仍然是难以捉摸的.就是这个:
@collection = <*>;
Run Code Online (Sandbox Code Playgroud)
我知道at符号定义collection为数组.我也搜索了一下,然后登陆perldoc,特别是关于I/O操作员的部分.我发现null filelhandle特别有趣; 代码如下.
while (<>) {
...
}
Run Code Online (Sandbox Code Playgroud)
在同一主题上我也注意到这个语法也是有效的:
while (<*.c>) {
...
}
Run Code Online (Sandbox Code Playgroud)
根据perldoc它实际上调用一个内部函数,其调用glob方式类似于以下代码:
open(FOO, "echo *.c | tr -s ' \t\r\f' '\\012\\012\\012\\012'|");
while (<FOO>) {
...
}
Run Code Online (Sandbox Code Playgroud)
第一行提到的小于,星号,超过(<*>)符号实际上做了什么?它是对内部开放和引用的glob的引用吗?它会是一个特殊情况,例如null文件句柄吗?或者它可以是完全不同的东西,比如传统的实现?
我无意中在Perl 5.20中使用了Perl 5.14的实验性自动反射功能,当然还收到有关其使用的警告.该diagnosticspragma解释了如果需要,如何抑制这些警告消息; 但是,我想更多地了解这个警告的根本原因(实际上是整体功能),所以我转而perldoc学习更多autoderef.
该perldoc experimental命令列出了autoderef有关其用途的高级语句,但仅此而已.
该perldoc perlexperiment命令提供了有关其他实验性功能的更多详细信息,但autoderef根本没有提及.
我已经试过各种其他perldoc选项(例如,-v,-f等),但无济于事.
使用?追踪此类warning/ diagnostics消息的有效方法是什么perldoc?实验性功能是否未涵盖perldoc?
更新:请参阅下面的@ ThisSuitIsBlackNot的优秀答案.
为了进一步澄清和参考:这似乎很奇怪的是,autoderef命名空间并没有在所有的各种文档(即持有perlexperiment,perldelta,perldoc等).perldoc experiment叫它autoderef,perldelta5140称之为auto-deref.perldoc perlexperiment使用了perldelta页面中的某种语言,但没有autoderef使用.
由于diagnostics陈述了相关的警告可以使用no warnings "experimental::autoderef".以此作为起点将是很好的perldoc.也就是说,查找相关文档perldoc experimental::autoderef,匹配由 …
我正在尝试使用Perl的do EXPR函数作为穷人的配置解析器,使用第二个.pl文件,它只返回一个列表作为配置信息.(我认为这可能是理想的用途do,尤其是因为我可以do or die在我的代码中写" ".这是一个例子:
main.pl
# Go read the config file
my %config = do './config.pl';
# do something with it
$web_object->login($config{username}, $config{password});
Run Code Online (Sandbox Code Playgroud)
config.pl
# Configuration file for main script
(
username => "username",
password => "none_of_your_business",
favorite_color => "0x0000FF",
);
Run Code Online (Sandbox Code Playgroud)
阅读Perldocdo提供了很多关于相对路径的有用建议 - 搜索@INC和修改%INC,关于5.26不搜索"."的特殊警告.更多,等等.但它也有这些位:
#加载确切的指定文件(./和../ special-cased) ...
使用do与相对路径(./和../除外),如...
然后它实际上从来没有麻烦解释"./"或"../"的特殊情况路径处理 - 一个重要的遗漏!
所以我的问题是" 当你真正发生了什么"时的所有变化do './file.pl';?例如...
任何见解都表示赞赏.
我发现具有高可用性级别的perldoc.pl是最新的5.30.0版本。
Perl.org链接到perldoc.perl.org,该版本停止在5.26.1版。但是另一方面,它链接到Download(版本5.28.2)到Strawberry Perl(实际上是5.30.0版本),我感到很困惑。
我已经知道Perl 6是完全不同的语言。在5.26。*之后可能还会有其他语言障碍吗?
由于我很少使用它,所以程序更新是重新输入Perl的起点。这就是为什么我对在安装之前研究delta文档 感兴趣的原因,而且很难找到该delta。