我从阅读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输出?
有warn 4什么不同print STDERR 4?
perl -e 'local *STDERR; warn 4'
Run Code Online (Sandbox Code Playgroud)
(输出仍然是STDERR)
perl -e 'local *STDERR; print STDERR 4'
Run Code Online (Sandbox Code Playgroud)
(这里没有输出)
$a="";
$b="n";
$c = !$a;
$d = !$b;
print $c , "\n" , $d;
if($d == 0){
print "zero";
}
Run Code Online (Sandbox Code Playgroud)
我写了这个perl程序,我期望输出如下
1
0Zero
Run Code Online (Sandbox Code Playgroud)
但它打印出来
1
zero
Run Code Online (Sandbox Code Playgroud)
可以任何人解释我为什么会这样?
我发现安装本机Debian或Ubuntu Perl软件包通常比通过"手动"安装Perl模块更加可靠和方便cpanm(特别是对于XS-Modules).在给出所需Perl模块列表的情况下,是否有一种简单的方法可以找到这些模块?最方便的方法是映射cpanfile,例如
requires 'XML::LibXSLT', '1.78';
Run Code Online (Sandbox Code Playgroud)
到为不同目标平台提供模块的发行版和包列表:
XML::LibXSLT, Ubuntu 13.04, libxml-libxslt-perl, 1.78
XML::LibXSLT, Ubuntu 13.10, libxml-libxslt-perl, 1.78
XML::LibXSLT, Ubuntu 14.04, libxml-libxslt-perl, 1.84
XML::LibXSLT, Debian squeeze, libxml-libxslt-perl, 1.70
XML::LibXSLT, Debian wheezy, libxml-libxslt-perl, 1.77
XML::LibXSLT, Debian jessie, libxml-libxslt-perl, 1.92
XML::LibXSLT, Debian sid, libxml-libxslt-perl, 1.92
Run Code Online (Sandbox Code Playgroud)
PS:我想这些信息可以从每个发行版的软件包存储库中查找,例如http://packages.ubuntu.com/和https://packages.debian.org但是有一个可编写脚本的解决方案已经做到了这一点抬头?
输出应该是aaabbbcccdddeee,而不是aaa555234dddeee
perl -wle'
map { for (my $i =2; $i <5; $i++) { push @a, $_ } } "a".."e";
print @a
'
aaa555234dddeee
Run Code Online (Sandbox Code Playgroud)
仅在引用/解除引用$_变量时的预期行为,
perl -wle'
map { for (my $i =2; $i <5; $i++) { push @a, ${\$_} } } "a".."e";
print @a
'
aaabbbcccdddeee
Run Code Online (Sandbox Code Playgroud)
这是一个记录的错误(或功能)?
香港专业教育学院执行此命令,从文件夹列车中的大量文件(约3000)中删除所有出现的"#",
perl -pi -e "s/#//g" /Users/Kian/Desktop/Acsegment/espslabs/train/*
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误: /bin/bash: /usr/bin/perl: Argument list too long
任何人都可以建议一种方法来避免这个错误?
我在用IO::Select.
我没想到只有当我手动终止分叉进程时才会终止此代码.这是正确的行为吗?
use strict;
use warnings;
STDOUT->autoflush();
use IO::Select;
open(my $ph, "-|", "perl -e 'sleep 1 while 1'");
my $sel = IO::Select->new();
$sel->add($ph);
$sel->can_read(2) or warn "timeout\n";
print "woohoo?\n";
Run Code Online (Sandbox Code Playgroud) 我想知道散列值比键更好的理论背景,以及perldoc是否涵盖了这个主题.
use strict;
use warnings;
use Benchmark qw(:all);
my %hash = 1 .. 30_000;
cmpthese(-3, {
values => sub {
for my $v (values %hash) { }
},
keys => sub {
for my $v (keys %hash) { }
},
avalues => sub {
for my $v (@{[ values %hash ]}) { }
},
akeys => sub {
for my $v (@{[ keys %hash ]}) { }
},
});
__DATA__
Rate akeys keys avalues values
akeys 196/s -- -33% -56% …Run Code Online (Sandbox Code Playgroud) 我目前正在努力将1996/8年编写的一些Perl代码翻译成Python.我是在想.当前的Perl似乎对数组有基于0的索引(即第一个元素是:
Array1[0]
Run Code Online (Sandbox Code Playgroud)
例如,最后一个元素是
Array1[$#Array1-1]
Run Code Online (Sandbox Code Playgroud)
(我认为......更好地理解Perl而不是编写它)
只是想知道在早期版本中他们是否有第一个
Array1[1]
Run Code Online (Sandbox Code Playgroud)
最后一个
Array1[$#Array1]
Run Code Online (Sandbox Code Playgroud)
只是想知道这在发展的某个阶段是否有所改变?
这可能是我自己的愚蠢,在这种情况下,我只需要更好地理解我对该程序的理解,但如果有人能指出我是哪一个,我将不胜感激.
谢谢
我编写了一个代码来查找10X10矩阵的行列式.该代码给出了直到9X9矩阵的正确结果.但对于10X10矩阵,会出现以下错误
"在第23行的乘法<*>中使用未初始化的值
第21行非法划分为零"
我也尝试过11X11矩阵,但它给出了错误的答案.
为什么这段代码会出现这样的错误......
以下是代码:
#!/usr/bin/perl
use strict;
use warnings;
my @x1=(
[5, 6, 3, 2, 4, 9, 3, 5, 4, 2],
[12, 9, 8, 3, 3, 0, 6, 9, 3, 4],
[8, 6, 5, 8, 9, 3, 9, 3, 9, 5],
[6, 4, 3, 0, 6, 4, 8, 2, 22, 8],
[8, 3, 2, 5, 2, 12, 7, 1, 6, 9],
[5, 9, 3, 9, 5, 1, 3, 8, 4, 2],
[3, 10, 4, 16, 4, 7, 2, …Run Code Online (Sandbox Code Playgroud)