小编Bra*_*ert的帖子

我应该如何安装多个版本的Perl?

我想安装,从源代码,Perl的版本5.005,v5.6,v5.8,v5.10

现在我安装了'v5.10.0'.

/opt/perl/bin
/opt/perl/html
/opt/perl/lib
/opt/perl/man
/opt/perl/lib/5.10.0
/opt/perl/lib/site_perl
/opt/perl/lib/site_perl/5.10.0

如果我全部安装它们会有任何问题/opt/perl吗?

或者我应该将它们分成他们自己的,特定于版本的目录?喜欢/opt/perl-5.10.0/

directory installation perl install multiple-versions

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

如何将正则表达式的匹配分配给变量?

我有一个包含各种条目的文本文件.每个条目都以包含所有星号的行结束.

我想使用shell命令来解析此文件并将每个条目分配给变量.我怎样才能做到这一点?

这是一个示例输入文件:

***********
Field1
***********
Lorem ipsum
Data to match
***********
More data
Still more data
***********

这是我的解决方案到目前为止的样子:

#!/bin/bash
for error in `python example.py | sed -n '/.*/,/^\**$/p'`
do
    echo -e $error
    echo -e "\n"
done
Run Code Online (Sandbox Code Playgroud)

但是,这只是将匹配文本中的每个单词分配给$ error,而不是整个块.

regex bash shell

15
推荐指数
1
解决办法
1万
查看次数

如何在反引号中正确使用perl变量名?

我需要在bash shell上执行以下代码:

mogrify -resize 800x600 *JPG
Run Code Online (Sandbox Code Playgroud)

由于宽度和高度是变量,我试过这个:

`mogrify -resize $widx$hit *JPG`
Run Code Online (Sandbox Code Playgroud)

但是在编译时,我得到了错误Global symbol "$widx" requires explicit package name at getattach.pl line 131.,这是因为编译器将$ widx视为新的未声明变量而不是$ wid和x.

我尝试在反引号中插入双引号,但代码的执行在没有任何消息的情况下停止.

在反引号中为shell执行插入变量名的正确方法是什么?它们可以连接吗?

variables perl backticks

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

我应该在Perl中使用autobox吗?

对于那些不了解Perl的人来说autobox,它是一个模块,它为您提供内置基元的方法,甚至可以覆盖它们.

# primitives
'a string'->toupper();
10->to(1); # returns [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

# Arrays, array refs
[qw(A B C D E)]->for_each( sub { ... } );
@array->length()

# Hashes, hash refs
{ key => 'value', key2 => 'value2' }->values()
%hash->keys()

# Even specify your own base class...
use autobox SCALAR => 'Foo';
Run Code Online (Sandbox Code Playgroud)

总体而言,内置类型的方法更像是对象,简化了一些任务,使其他任务变得更加明显.

然而...

autobox文档说有性能损失,一些比简单地调用对象的方法,比标准的语法更加多. 然后,有一些关于它在evals中使用的警告(特别是字符串evals)在某些情况下可能会导致问题. 它看起来似乎没有标准的许多Perl发行版.

使用autobox真的值得吗?

perl

13
推荐指数
3
解决办法
706
查看次数

Perl中的非阻塞/异步执行

有没有办法fork()在Perl中实现非阻塞/异步执行(没有'ing)?

我曾经是一名Python开发人员多年...... Python拥有非常棒的'Twisted'框架允许这样做(使用DEFERREDs.当我运行搜索以查看Perl中是否有任何内容可以执行相同操作时,我遇到了POE框架 - 看起来与我正在搜索的内容"相近".但是......花了一些时间阅读文档并"玩"代码后,我反对"墙" - 这是限制性的(来自POE) ::会话文档):

回调不是先发制人的.只要一个人正在运行,就不会派遣其他人.这称为协作式多任务处理.每个会话必须通过返回中央调度内核进行协作.

这种限制基本上违背了异步/并行/非阻塞执行的目的 - 通过限制在任何给定时刻执行的只有一个回调(代码块).当另一个回调已经在运行时,没有其他回调可以开始运行!

所以......在Perl中有没有办法实现多任务(并行,非阻塞,异步执行代码)而不用fork()- 类似于Python中的DEFERREDs

parallel-processing perl asynchronous nonblocking

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

Code Golf:从文本中快速构建关键字列表,包括实例数

我已经用PHP为自己设计了这个解决方案,但我很好奇它是如何以不同的方式完成的 - 甚至更好.我最感兴趣的两种语言是PHP和Javascript,但我很想知道今天用其他主要语言(主要是C#,Java等)可以多快地完成这项工作.

  1. 仅返回出现次数大于X的单词
  2. 仅返回长度大于Y的单词
  3. 忽略像"和,是,等等"这样的常用术语
  4. 在处理之前随意剥去标点符号(即"约翰"成为"约翰")
  5. 返回集合/数组中的结果

额外信用

  1. 将引用的陈述保持在一起,(即"它们'太好了,显然不是真的'")
    实际的陈述是"太好不可能"

额外信用额度

  1. 您的脚本可以根据它们在一起找到的频率来确定应该保存在一起的单词吗?这是在事先不知道单词的情况下完成的.例:
    *"果蝇在医学研究方面是一件好事.过去对果蝇进行了大量的研究,并取得了许多突破.未来,果蝇将继续研究,但是我们的方法可能会改变."*
    显然,这里的词是"果蝇",这对我们来说很容易找到.你的search'n'scrape脚本也可以确定吗?

源文:http://sampsonresume.com/labs/c.txt

答案格式

  1. 除了操作持续多长时间之外,看到代码,输出的结果会很棒.

language-agnostic code-golf text-parsing rosetta-stone

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

是MooseX :: Declare和MooseX :: Method ::签名生产准备好了吗?

目前的版本(0.98)中的驼鹿::手册:: MooseX是线路:

我们对未来寄予厚望 MooseX::Method::SignaturesMooseX::Declare.然而,这些模块虽然经常被社区中一些更疯狂的成员用于生产,但仍然标记为alpha,以防万一需要进行向后不兼容的更改.

我注意到2009年9月MooseX::Method::Signatures更改日志中提到删除了" 可怕的ALPHA免责声明 ".
那么,这些仍然是"阿尔法"吗?
我还会被认为是使用它们的"更疯狂"之一吗?

perl moose

12
推荐指数
4
解决办法
996
查看次数

Perl的网::( SSH vs SSH2 vs OpenSSH) - 我该如何比较它们?

希望通过Perl脚本在远程计算机上执行perl脚本.出现一个选项是使用system()函数并创建一个ssh密钥,因此不需要密码.这引出了我对这个问题的关注,另一个选择似乎是安装和运行其中一个perl模块:

除了使用的协议,我还应该与这些Perl模块进行比较?

ssh perl perl-module

11
推荐指数
1
解决办法
6674
查看次数

数组搜索代码挑战

这是我的(代码高尔夫)挑战:取两个字节数组并确定第二个数组是否是第一个数组的子字符串.如果是,则输出第一个数组中第二个数组内容出现的索引.如果在第一个数组中没有找到第二个数组,则输出-1.

示例输入:{63,101,245,215,0} {245,215}

预期产出:2

示例输入2:{24,55,74,3,1} {24,56,74}

预期输出2:-1

编辑:有人指出bool是多余的,所以你所要做的就是返回一个表示值索引的int,如果找不到则返回-1.

search code-golf bytearray rosetta-stone

10
推荐指数
5
解决办法
2404
查看次数

什么Perl模块可用于验证子例程参数?

我正在寻找一个通用的模块来解决验证子程序和方法参数的苦差事.:我已经通过在CPAN各种可能性进行扫描Params::Validate,Params::Smart,Getargs::Mixed,Getargs::Long,和其他几个人.

任何有关这些或其他模块的利弊的信息将不胜感激.谢谢.

validation parameters perl

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