小编Dav*_*d B的帖子

你如何在Perl中对并行数组进行排序?

我有一些长度相同的数组.我想对第一个数组进行排序,并使所有其他数组相应地"排序".例如,如果第一个数组是(7,2,9)第二个是("seven","two","nine"),第三个数组是在("VII","II","IX")排序之后(根据第一个数组值递增),我们将拥有(2,7,9) ("two","seven","nine")("II","VII","IX").

我怎样才能做到这一点?

arrays sorting perl

2
推荐指数
3
解决办法
1715
查看次数

perl中的"递归"常量

在perl中定义另一个常量时,是否有一些有针对性的方法来使用一个常量?

显然,下列情况工作

use constant {
    MAIN_DIR   => "/path/to/some/dir",
    PROP_DIR => MAIN_DIR . "/sub_dir",
    PROP_FILE  => PROP_DIR . "/props.props",
};
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一想法是多use constant行,但它有点难看......

perl constants

2
推荐指数
1
解决办法
130
查看次数

如何在 Perl 中处理具有依赖关系的调度线程?

我有以下场景:

sub_1 can run immediately
sub_2 can run immediately
sub_3 can run only after sub_1 finishes
sub_4 can run only after sub_1 finishes
sub_5 can run only after sub_2 finishes
sub_6 can run only after sub_2 finishes
sub_7 can run only after both sub_1 and sub_2 finish
sub_8 can run only after both sub_1 and sub_2 finish
Run Code Online (Sandbox Code Playgroud)

我希望每个子程序尽快开始运行,而不是等待所有子程序完成。

我非常感谢您帮助为这个简单的场景创建一个干净的解决方案——我是多线程的新手。

我不确定它是否有所不同,但这些潜艇都在一个对象中。

perl multithreading

2
推荐指数
1
解决办法
1325
查看次数

perl中管道文件句柄的问题

我试图bp_genbank2gff3.pl从另一个获取genbank作为其参数的perl脚本运行(bioperl包).

这不起作用(不生成输出文件):

   my $command = "bp_genbank2gff3.pl -y -o /tmp $ARGV[0]";

   open( my $command_out, "-|", $command );
   close $command_out;
Run Code Online (Sandbox Code Playgroud)

但确实如此

   open( my $command_out, "-|", $command );
   sleep 3; # why do I need to sleep?
   close $command_out;
Run Code Online (Sandbox Code Playgroud)

为什么?

我认为close在命令完成之前应该阻止:

关闭任何管道文件句柄会导致父进程等待子进程完成...(请参阅http://perldoc.perl.org/functions/open.html).

编辑

我在最后一行添加了这个:

say "ret=$ret, \$?=$?, \$!=$!";
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,打印输出是:

ret=, $?=13, $!=
Run Code Online (Sandbox Code Playgroud)

(这close两种情况都意味着失败,对吧?)

perl pipe filehandle

2
推荐指数
1
解决办法
2451
查看次数

在perl中打开管道时直接STDERR

open( my $command_out, "-|", $command_string )用来执行一个命令并动态处理它的输出(不必等待命令先完成,如同system()).

我注意到当我以这种方式调用一些R脚本时,一些R消息被打印到屏幕上(例如Loading required package: ...).我想这是因为R将此输出发送到stderr(?虽然这些不是真正的错误).

是否有可能太直接了这个输出$command_outopen()-ing所以屏幕将保持清洁?

perl r pipe execution

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

如何在Perl中复制只读目录?

我正在使用File::Copy::Recursive::dircopy( $original_dirname, $new_dirname ) or die $!;从Perl脚本中复制只读目录.我收到一个Permission denied错误.

我可以看到它$new_dirname已创建,但被标记为只读(与原始目录一样).也许这可以防止将内容复制到其中?

perl copy

2
推荐指数
1
解决办法
401
查看次数

如何在Perl中使用正则表达式匹配子目录路径?

我想匹配路径,/this/is/my/dir/name/anything但不是/this/is/my/dir/name/anything/anything2.换句话说,我希望在第一级匹配``/ this/is/my/dir/name /`下的所有文件和子目录,但不要匹配更低级别的任何文件和子目录.

regex perl

2
推荐指数
1
解决办法
4970
查看次数

如何使用perlbrew在我家安装Perl版本?

我已经安装了perlbrew,这似乎是一个很好的解决方案,但在实际尝试安装一些Perl版本时,我得到了一些毫无意义的错误:

$ perlbrew install perl-5.12.1
Attempting to load conf from /home/dave/perl5/perlbrew/Conf.pm
Fail to get http://search.cpan.org/dist/perl-5.12.1 (error: ) at /home/dave/perl5/perlbrew/bin/perlbrew line 1277.
Run Code Online (Sandbox Code Playgroud)

perl install perlbrew

2
推荐指数
1
解决办法
3108
查看次数

在调用Perl子例程时如何传递匿名子例程?

mysub 获取子例程引用作为其第一个参数.

我可以直接打电话mysub(sub{some subroutine body here})吗?即在通话时定义一个匿名子程序?

语法是否正确(是否真的是对它的引用sub传递)?

perl arguments anonymous-function

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

如何在Perl中检查值是否为undef?

最好通过一个例子问:

my $var1=1;
my $var2;
my $var3=3;

# say "at least one undef" if at least one of $var1, $var2, $var3 is undef
Run Code Online (Sandbox Code Playgroud)

显然我可以显式循环并执行此操作,但我总是希望找到一个可以实现相同结果的衬垫.

perl undefined-index

2
推荐指数
1
解决办法
412
查看次数