小编Pat*_*Pat的帖子

如何开始使用Perl 6?

有人可以提供从Perl 6开始的材料链接吗?还有人可以指出已经用Perl 6开发的真实应用程序吗?

perl perl6 raku

14
推荐指数
3
解决办法
602
查看次数

Perl6是否支持与Perl5的__DATA__和__END__部分相同的内容?

perl6/Rakudo是否有相当于perl5 __DATA____END__部分的东西?

perl rakudo perl6 raku

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

部署自包含的Perl 6脚本

部署使用外部模块的Perl 6脚本的最佳策略是什么LWP::Simple

例如在Perl中我们有PAR.Perl 6中是否有一个选项可以部署一个自包含的脚本,用户只需要在不安装Rakudo和外部Perl 6模块的情况下运行它就可以运行?

perl6 raku

14
推荐指数
1
解决办法
455
查看次数

如何在Perl 6中返回上下文敏感的返回值?

在Perl 5和Perl 6之间差异的总结中,注意到该wantarray功能已经消失:

wantarray()走了

wantarray走了.在Perl 6中,上下文向外流动,这意味着例程不知道它在哪个上下文中.

相反,你应该返回在每个上下文中做正确事情的对象.

有人可以举例说明如何创建这样的对象吗?

perl perl6 perl5 raku

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

我可以在Perl 5中为字符串创建文件句柄,我该如何在Perl 6中完成?

在Perl 5中,我可以创建一个字符串的文件句柄,并从字符串中读取或写入,就好像它是一个文件一样.这非常适合使用测试或模板.

例如:

use v5.10; use strict; use warnings;

my $text = "A\nB\nC\n";

open(my $fh, '<', \$text);

while(my $line = readline($fh)){
    print $line;
}
Run Code Online (Sandbox Code Playgroud)

我怎么能在Perl 6中做到这一点?以下为Perl 6的工作(至少对于上运行我的Perl6的实例MoarVM 2015.01Rakudo星2015年1月发布 64位的CentOS 6.5):

# Warning: This code does not work
use v6;

my $text = "A\nB\nC\n";

my $fh = $text;

while (my $line = $fh.get ) {
    $line.say;
}
# Warning: Example of nonfunctional code
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

No such method 'get' for invocant of type 'Str'
   in block <unit> …
Run Code Online (Sandbox Code Playgroud)

string perl filehandle perl6 raku

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

Perl6是否支持依赖类型?

我最近在维基百科页面查看依赖类型,我很想知道; Perl 6实际上是否引入了依赖类型?我似乎找不到可靠的消息来源.

这对某些人来说可能是显而易见的,但对我来说这肯定不明显.

types perl6 dependent-type raku

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

共享电源可以同时运行多个分接块吗?

考虑这个代码需要一段时间才能完成.所有块同时运行(立即输出)然后休眠.大部分都没有完成,因为程序结束的时间越早,他们就会:

my $supply = Supply.interval(0.2);
my $tap = $supply.tap: { say "1 $^a"; sleep 5;  };
sleep 5;
Run Code Online (Sandbox Code Playgroud)

输出(省略)有25行(每个刻度为1,每5秒为0.2):

1. 0
1. 1
...
1. 24
Run Code Online (Sandbox Code Playgroud)

然后我将供应改为.share:

my $supply = Supply.interval(0.2).share;
my $tap = $supply.tap: { say "1. $^a"; sleep 5 };
sleep 5;
Run Code Online (Sandbox Code Playgroud)

我只看到一行输入,但我期望相同的输出:

1. 1
Run Code Online (Sandbox Code Playgroud)

.share使得多个分接头可以获得相同的值.

my $supply = Supply.interval(0.2).share;
my $tap  = $supply.tap: { say "1. $^a"; sleep 5 };
my $tap2 = $supply.tap: { say "2. $^a";  };
sleep 5;
Run Code Online (Sandbox Code Playgroud)

输出仍然仅为第一个抽头输出,但仍然只有一行.我预计每行25行:

1. …
Run Code Online (Sandbox Code Playgroud)

tap perl6 raku

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

Perl 6在清理对象时会自动调用任何特殊方法吗?

我认为Rakudo几年前获得了终结器支持,但我找不到它的文档(也许它在Classes和Objects中).列出类中的所有方法似乎不是我想要的东西.

class Butterfly {
    method DESTROY { put "Destroyed" }
    # submethod DESTROY { put "Destroyed" }
    }
{
Butterfly.new;
}
Run Code Online (Sandbox Code Playgroud)

也许问题是#127243:[RFC] DESTROY没有在解释器退出时调用

啊,并在烤/ S12-construction/destruction.t中标记为"待办事项" .

finalizer perl6 raku

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

双连接参数交换边

我对双连接应该如何工作感到困惑.

这有点道理:

say all('a', 'b', 'c') ~ any('d', 'e');
Run Code Online (Sandbox Code Playgroud)

all(any(ad, ae), any(bd, be), any(cd, ce))
Run Code Online (Sandbox Code Playgroud)

这没有意义:

say any('a', 'b', 'c') ~ all('d', 'e');
Run Code Online (Sandbox Code Playgroud)

all(any(da, db, dc), any(ea, eb, ec))
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为我希望在字母'd'左边的字母'a'现在在右边.

perl6 perl6-junction raku

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

你能用非utf8编码编写Perl 6脚本吗?

Perl 5有encodingpragmaFilter::Encoding模块,但是,我没有在Perl 6中发现任何类似的东西.我想最终会创建源过滤器,但是暂时,你能在Pe​​rl 6脚本中使用其他编码吗?

encoding perl6 raku

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