小编Сух*_*й27的帖子

如何使用perldoc查找%ENV变量?

我从阅读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输出?

perl perldoc

4
推荐指数
1
解决办法
1110
查看次数

沉默STDERR和警告

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)

(这里没有输出)

perl

4
推荐指数
1
解决办法
280
查看次数

任何人都可以向我解释perl程序的行为

$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)

可以任何人解释我为什么会这样?

perl logical-operators

4
推荐指数
1
解决办法
138
查看次数

如何查找(Debian/Ubuntu/...)包提供所需的Perl模块

我发现安装本机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但是有一个可编写脚本的解决方案已经做到了这一点抬头?

perl debian package-managers

4
推荐指数
1
解决办法
1140
查看次数

$ _的奇怪值/行为

输出应该是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)

这是一个记录的错误(或功能)?

perl

4
推荐指数
1
解决办法
179
查看次数

如何修复'参数列表太长'错误?

香港专业教育学院执行此命令,从文件夹列车中的大量文件(约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

任何人都可以建议一种方法来避免这个错误?

bash shell perl

4
推荐指数
2
解决办法
638
查看次数

关于IO :: Select的澄清

我在用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)

perl

4
推荐指数
1
解决办法
55
查看次数

键与值的表现

我想知道散列值比键更好的理论背景,以及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)

perl hash

4
推荐指数
1
解决办法
108
查看次数

旧版本的Perl是否有不同的数组索引规则?

我目前正在努力将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)

只是想知道这在发展的某个阶段是否有所改变?
这可能是我自己的愚蠢,在这种情况下,我只需要更好地理解我对该程序的理解,但如果有人能指出我是哪一个,我将不胜感激.

谢谢

arrays perl

3
推荐指数
1
解决办法
134
查看次数

非法划分为零:Perl

我编写了一个代码来查找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)

perl matrix

3
推荐指数
1
解决办法
140
查看次数