小编Cha*_*ens的帖子

如何声明一个类在MooseX :: Declare中使用多个角色?

鉴于角色Fooable和Barable都已定义,我怎么说FooBar类可以做Fooable和Barable?我没问题

#!/usr/bin/perl

use MooseX::Declare;

role Fooable {
    method foo { print "foo\n" }
}

role Barable {
    method bar { print "bar\n" }
}

class Foo with Fooable {}
class Bar with Barable {}

package main;

use strict;
use warnings;

Foo->new->foo;
Bar->new->bar;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试添加时

class FooBar with Fooable, Barable {}
Run Code Online (Sandbox Code Playgroud)

我得到的不是有用的错误

expected option name at [path to MooseX/Declare/Syntax/NamespaceHandling.pm] line 45
Run Code Online (Sandbox Code Playgroud)

为了向自己证明我并不疯狂,我用Moose重写了它.这段代码有效(但比罪恶更丑):

#!/usr/bin/perl

package Fooable;
    use Moose::Role;    
    sub foo { print "foo\n" }

package Barable;    
    use Moose::Role;    
    sub bar { print "bar\n" …
Run Code Online (Sandbox Code Playgroud)

perl moose

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

如何获取具有给定属性的所有Unicode字符的列表?

如果不循环遍历整个Unicode字符范围,我如何获得具有给定属性的字符列表?特别是我想要一个包含所有数字字符的列表(即那些匹配的字符/\d/).我已经看过Unicode::UCD,它对于确定给定字符的属性很有用,但似乎没有办法获得具有该属性的列表字符.

unicode perl character-properties

6
推荐指数
1
解决办法
1328
查看次数

当字符集为ASCII时,如何在文字字符串ISO/ANSI C中表示Unicode字符?

在Perl中,我可以说

my $s = "r\x{e9}sum\x{e9}";
Run Code Online (Sandbox Code Playgroud)

分配"résumé"$s.我想在C中做类似的事情.具体来说,我想说

sometype_that_can_hold_utf8 c = get_utf8_char();
if (c < '\x{e9}') {
    /* do something */
}
Run Code Online (Sandbox Code Playgroud)

c unicode

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

如何找到并行树中的哪些作业可以并行运行?

目前,我使用图形来存储依赖项,然后运行没有任何依赖项的所有顶点.这有效,但感觉很糟糕.我应该使用更好的算法或数据结构吗?

#!/usr/bin/perl

use strict;
use warnings;

use Graph;

#FIXME: naive implementation, there may be a much better way to do this
sub run_in_parallel {
       my $g = shift->copy;

       while (my @v = $g->vertices) {
               my @run = grep { $g->is_successorless_vertex($_) } @v;
               print "running ", join(", ", @run), " in parallel\n";
               for my $compenent (@run) {
                       $g->delete_vertex($compenent);
               };
       }
}

my $g = Graph->new;
while (<DATA>) {
       my ($component, @dependencies) = split;
       unless ($g->has_vertex($component)) {
               $g->add_vertex($component);
       }
       for my $dependency …
Run Code Online (Sandbox Code Playgroud)

algorithm perl data-structures

6
推荐指数
1
解决办法
491
查看次数

为什么Perl 5在抱怨未初始化的值时会告诉你变量的名称?

为什么Perl 5没有给我它抱怨的变量的名称?

perl5.8.9 -we 'my $u; print "$u\n"'
Use of uninitialized value in concatenation (.) or string at -e line 1.
Run Code Online (Sandbox Code Playgroud)

perl

6
推荐指数
1
解决办法
150
查看次数

File :: Spec真的有必要吗?

我知道不同操作系统具有不同路径格式的历史,但此时似乎有一个关于路径如何工作的一般协议(有一种不相关的保持*).我发现File::Spec路径管理的整个路径是笨重的,无用的痛苦.

是否真的值得拥有这套巴洛克式的功能来操纵路径?请说服我,我是短视的.

*不相关,因为即使是MS Windows也允许在路径中使用正斜杠,这意味着唯一一个时髦的东西就是开始时的音量,这对我来说从未真正成为问题.

perl

6
推荐指数
1
解决办法
1023
查看次数

每次使用的数据发生变化时,如何让AngularJS重新运行一个函数?

有了Knockout,我可以说

<html>
    <head>
        <script type="text/javascript" src="knockout-2.1.0.js"></script>
    </head>
    <body>
        <input type="text" data-bind="value: a"></input> +
        <input type="text" data-bind="value: b"></input> =
        <span data-bind="text: result"></span>
        <script type="text/javascript">
            function ExampleViewModel() {
                this.a = ko.observable(5);
                this.b = ko.observable(6);
                this.result = ko.computed(function() {
                    return parseInt(this.a()) + parseInt(this.b());
                }, this);
            }

            ko.applyBindings(new ExampleViewModel());
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并且result每次a和b改变时都会重新计算.我怎样才能让AngularJS为我做这个?我试过了

<html ng-app>
    <head>
        <script type="text/javascript" src="angular-1.0.1.min.js"></script>
        <script type="text/javascript">
            function ExampleCtrl($scope) {
                $scope.a = 5;
                $scope.b = 6;
                $scope.result = function() {
                    return this.a + this.b
                };
            }

</script>
    </head> …
Run Code Online (Sandbox Code Playgroud)

angularjs

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

如何从文件中流式传输JSON?

我将有一个可能非常大的JSON文件,我想从它流,而不是将它全部加载到内存中.根据以下声明(我补充说明)JSON::XS,我认为它不符合我的需要.是否有一个Perl 5 JSON模块可以从磁盘中传输结果?

在某些情况下,需要对JSON文本进行增量解析.虽然此模块始终必须同时将JSON文本和生成的Perl数据结构保留在内存中,但它允许您以递增方式解析JSON流.它通过累积文本直到它具有完整的JSON对象来实现,然后它可以解码.此过程类似于使用decode_prefix查看完整的JSON对象是否可用,但效率更高(并且可以使用最少的方法调用来实现).

为了澄清,JSON将包含一个对象数组.我想从文件中一次读取一个对象.

perl json stream

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

Perl 6是否会对订单更改作出任何承诺?

考虑到像/(foo|foobar|foobaz)/Perl 6 这样的替代方案,会对三者中的哪一个首先使用做出任何承诺,如果它在文档中的哪个地方做出了承诺呢?

请参阅相关问题Perl目前(5.8和5.10)是否会使用有关订单替换的任何承诺?.

rules perl6 raku

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

它在文档中的哪个位置说测试readdir的定义性?

另请参阅:readdir的"0"如何在while条件下不是false?.(不重复;只是密切相关.)


它在文档中的哪个位置说测试readdir的定义性?例如,这段代码

#!/usr/bin/perl

use strict;
use warnings;

opendir my $dir, "/tmp" or die "$!";

while (my $file = readdir($dir)) {
        print "$file\n";
}
closedir $dir;
Run Code Online (Sandbox Code Playgroud)

当运行B :: Deparse时:

use warnings;
use strict 'refs';
die "$!" unless opendir my $dir, '/tmp';
while (defined(my $file = readdir $dir)) {
    do {
        print "$file\n"
    };
}
z.pl syntax OK
Run Code Online (Sandbox Code Playgroud)

我期待这种行为,但我找不到它的指定位置.在perlopI/O运算符部分,它说

以下行是等效的:

     while (defined($_ = <STDIN>)) { print; }
     while ($_ = …

perl perldoc

5
推荐指数
1
解决办法
203
查看次数