我想安装,从源代码,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/
我有一个包含各种条目的文本文件.每个条目都以包含所有星号的行结束.
我想使用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,而不是整个块.
我需要在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执行插入变量名的正确方法是什么?它们可以连接吗?
对于那些不了解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真的值得吗?
有没有办法fork()在Perl中实现非阻塞/异步执行(没有'ing)?
我曾经是一名Python开发人员多年...... Python拥有非常棒的'Twisted'框架允许这样做(使用DEFERREDs.当我运行搜索以查看Perl中是否有任何内容可以执行相同操作时,我遇到了POE框架 - 看起来与我正在搜索的内容"相近".但是......花了一些时间阅读文档并"玩"代码后,我反对"墙" - 这是限制性的(来自POE) ::会话文档):
回调不是先发制人的.只要一个人正在运行,就不会派遣其他人.这称为协作式多任务处理.每个会话必须通过返回中央调度内核进行协作.
这种限制基本上违背了异步/并行/非阻塞执行的目的 - 通过限制在任何给定时刻执行的只有一个回调(代码块).当另一个回调已经在运行时,没有其他回调可以开始运行!
所以......在Perl中有没有办法实现多任务(并行,非阻塞,异步执行代码)而不用fork()- 类似于Python中的DEFERREDs?
我已经用PHP为自己设计了这个解决方案,但我很好奇它是如何以不同的方式完成的 - 甚至更好.我最感兴趣的两种语言是PHP和Javascript,但我很想知道今天用其他主要语言(主要是C#,Java等)可以多快地完成这项工作.
额外信用
额外信用额度
*"果蝇在医学研究方面是一件好事.过去对果蝇进行了大量的研究,并取得了许多突破.未来,果蝇将继续研究,但是我们的方法可能会改变."*显然,这里的词是"果蝇",这对我们来说很容易找到.你的search'n'scrape脚本也可以确定吗?
源文:http://sampsonresume.com/labs/c.txt
答案格式
从目前的版本(0.98)中的驼鹿::手册:: MooseX是线路:
我们对未来寄予厚望
MooseX::Method::Signatures和MooseX::Declare.然而,这些模块虽然经常被社区中一些更疯狂的成员用于生产,但仍然标记为alpha,以防万一需要进行向后不兼容的更改.
我注意到2009年9月MooseX::Method::Signatures的更改日志中提到删除了" 可怕的ALPHA免责声明 ".
那么,这些仍然是"阿尔法"吗?
我还会被认为是使用它们的"更疯狂"之一吗?
希望通过Perl脚本在远程计算机上执行perl脚本.出现一个选项是使用system()函数并创建一个ssh密钥,因此不需要密码.这引出了我对这个问题的关注,另一个选择似乎是安装和运行其中一个perl模块:
除了使用的协议,我还应该与这些Perl模块进行比较?
这是我的(代码高尔夫)挑战:取两个字节数组并确定第二个数组是否是第一个数组的子字符串.如果是,则输出第一个数组中第二个数组内容出现的索引.如果在第一个数组中没有找到第二个数组,则输出-1.
示例输入:{63,101,245,215,0} {245,215}
预期产出:2
示例输入2:{24,55,74,3,1} {24,56,74}
预期输出2:-1
编辑:有人指出bool是多余的,所以你所要做的就是返回一个表示值索引的int,如果找不到则返回-1.
我正在寻找一个通用的模块来解决验证子程序和方法参数的苦差事.:我已经通过在CPAN各种可能性进行扫描Params::Validate,Params::Smart,Getargs::Mixed,Getargs::Long,和其他几个人.
任何有关这些或其他模块的利弊的信息将不胜感激.谢谢.
perl ×7
code-golf ×2
asynchronous ×1
backticks ×1
bash ×1
bytearray ×1
directory ×1
install ×1
installation ×1
moose ×1
nonblocking ×1
parameters ×1
perl-module ×1
regex ×1
search ×1
shell ×1
ssh ×1
text-parsing ×1
validation ×1
variables ×1