小编Eth*_*her的帖子

是否有任何良好的自动化框架在Perl中应用编码标准?

我所知道的是Perl :: Critic

到目前为止,我的谷歌搜索没有导致多次尝试的结果.:-(

有没有人在这里有任何建议?

任何根据我们的编码标准配置Perl :: Critic并在代码库上运行它的资源将不胜感激.

perl frameworks coding-style perl-critic

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

有没有办法在运行时确定可用的堆栈空间?

我知道堆栈大小是固定的.所以我们不能在堆栈上存储大对象,我们转向动态分配(例如malloc).此外,当存在函数调用嵌套时使用堆栈,因此我们也避免了递归函数.在运行时有没有办法确定到目前为止使用了多少堆栈内存以及剩下多少?

在这里,我假设使用x86架构的linux环境(gcc编译器).

c linux stack-overflow compiler-construction stack

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

Git-Diff与Git-log?有什么不同?

我对Git有点困惑.当我查看手册时,看起来Diff包含在Git-log手册中.另外,当我看到教程和内容时,我发现Git日志与git-diff的功能相同.Git-Diff的功能只是Git-log的一个子集吗?

谢谢!

git

9
推荐指数
1
解决办法
4234
查看次数

当我通过数组grep时,如何获得元素的索引?

假设我有这个清单:

my @list = qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)

我想抓住所有包含的元素o.我有这个:

my @containing_o = grep { /o/ } @list;
Run Code Online (Sandbox Code Playgroud)

但是我还需要做些什么才能获得索引,或者能够访问索引中的索引grep

arrays perl grep

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

什么是R的等价于Perl的地图和grep?

我对(功能)矢量操作感兴趣R.具体来说,什么是R的等同Perl的mapgrep

以下Perl脚本使用偶数数组元素并将它们乘以2:

@a1=(1..8); 
@a2 = map {$_ * 2} grep {$_ % 2 == 0} @a1;
print join(" ", @a2)
# 4 8 12 16
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做R?我得到了这个,sapply用于Perl map:

> a1 <- c(1:8)
> sapply(a1, function(x){x * 2})
[1]  2  4  6  8 10 12 14 16
Run Code Online (Sandbox Code Playgroud)

我在哪里可以阅读更多关于这种功能阵列操作的内容R

此外,有没有一个PerlR语法书,类似于Perl的Python的短语

perl grep functional-programming r map

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

Perl:linux源代码中的checkstack.pl做了什么?

我正在linux内核中做一个项目,我想知道这个checkstack.pl做了什么?我从未学习过perl,因此无法理解该程序.如果我能从概念上理解程序,如果不是逐行理解,那将是很棒的.任何努力赞赏.

来源: 链接文字

假设我想编写自己的调整代码,可以在C程序中编写.我的主要问题是:为什么编写这段代码或者应该用perl编写?

linux perl stack linux-kernel

9
推荐指数
1
解决办法
2005
查看次数

Catalyst中DBIx :: Class :: Schema模型上的Moose方法修饰符

对于任何给定的结果类MySchema :: Result :: Foo(从默认模式加载器生成的语法构建,使用Moose/MooseX :: nonmoose)

如果我添加一个BUILDARGS方法包装来清理行的构造函数数据,如下所示:

package MySchema::Result::Foo;
use Moose;
use MooseX::NonMoose;
[etc ..]

around 'BUILDARGS' => sub {
   my $orig = shift;
   my $class = shift;
   delete $_[0]->{not_a_real_column};
   return $class->$orig(@_);
};
Run Code Online (Sandbox Code Playgroud)

它直接使用架构时有效.例如,以下按预期工作:创建一个新的行对象,使用real_column =>'value'并删除not_a_real_column - > new

use MySchema;
my $s = MySchema->connect('dbi:blahblahblah');
$s->resultset('Foo')->new({ real_column=>'value', not_a_real_column=>'some other thing' }); #win
Run Code Online (Sandbox Code Playgroud)

但是,当通过Catalyst :: Model :: DBIC :: Schema使用相同的模式时,顺序是不同的.尝试创建新的Foo行对象时,以下操作失败,因为not_a_real_column无效.换句话说,在调用new之前,new的参数不会通过BUILDARGS运行.

$c->model('MySchemaModel')->resultset('Foo')->new({ real_column=>'value', not_a_real_column=>'some other thing' }); #fails
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我绕过'new'=> sub {}而不是'BUILDARGS'=> sub {},两种情况下的行为是相同的,并且工作正常,但据我所知,Moose教条声明永远不会弄乱新.

任何人都在关心帮助我理解为什么会这样,或者是否有更好的方法?

perl moose catalyst dbix-class

9
推荐指数
1
解决办法
857
查看次数

Perl6:使用正则表达式捕获字符串中的Windows换行符

免责声明:我在PerlMonks上交叉发布了这个帖子.

在Perl5中,我可以快速轻松地打印出\r\nWindows样式行结尾的十六进制表示:

perl -nE '/([\r\n]{1,2})/; print(unpack("H*",$1))' in.txt
0d0a
Run Code Online (Sandbox Code Playgroud)

要在Unix上创建Windows结束文件,如果要测试,请创建一个in.txt包含单行和行结尾的文件.然后:perl -ni -e 's/\n/\r\n/g;print' in.txt.(或在vi/vim中,创建文件,然后执行:set ff=dos).

我在Perl6中尝试过很多东西来做同样的事情,但无论我做什么,我都无法工作.这是我最近的测试:

use v6;
use experimental :pack;

my $fn = 'in.txt';

my $fh = open $fn, chomp => False; # I've also tried :bin
for $fh.lines -> $line {
    if $line ~~ /(<[\r\n]>**1..2)/ {
        $0.Str.encode('UTF-8').unpack("H*").say;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出 0a,如:

/(\n)/
/(\v)/ 
Run Code Online (Sandbox Code Playgroud)

首先,我甚至不知道我正在使用unpack()正确的正则表达式.其次,如何\r\n在P6中捕获换行符的两个元素()?

regex perl6 raku

9
推荐指数
1
解决办法
262
查看次数

每个if-else构造都可以用等效的条件表达式替换吗?

(我不太需要这个答案,我只是好奇.)

是否可以使用条件运算符将每个if-else构造替换为等效的条件表达式?:

c c++ conditional-operator

8
推荐指数
1
解决办法
4591
查看次数

如何在Perl中调用存储在哈希中的函数名?

我确定这在文档的某个地方有所涉及,但我一直无法找到它......我正在寻找能够在类名称存储在哈希中的类上调用方法的语法糖(而不是简单的标量):

use strict; use warnings;

package Foo;
sub foo { print "in foo()\n" }

package main;
my %hash = (func => 'foo');

Foo->$hash{func};
Run Code Online (Sandbox Code Playgroud)

如果我首先复制$hash{func}到标量变量,那么我可以调用Foo->$func就好......但是缺少什么来启用Foo->$hash{func}它?

(编辑:我不是要通过在类上调用一个方法来做任何特殊的事情Foo- 这可能很容易成为一个受祝福的对象(在我的实际代码中);它只是更容易编写一个自包含的使用类方法的示例.)

编辑2:为了完整性,请回答下面的评论,这就是我实际在做的事情(这是在Moose属性糖库中,用Moose :: Exporter创建的):

# adds an accessor to a sibling module
sub foreignTable
{
    my ($meta, $table, %args) = @_;

    my $class = 'MyApp::Dir1::Dir2::' . $table;
    my $dbAccessor = lcfirst $table;

    eval "require $class" or do { die "Can't load $class: $@" };

    $meta->add_attribute( …
Run Code Online (Sandbox Code Playgroud)

syntax perl attributes reference moose

8
推荐指数
1
解决办法
1898
查看次数