小编Eli*_*sen的帖子

CATCH失败失败

我可能忽略了一些简单的事情,但是我不希望下面的代码失败。它表现得好像是我写的,die而不是fail在catch块中的。

无法正确处理故障,代码消失。

sub foo() 
{
  try {
    say 1 / 0;
    CATCH { default { fail "FAIL" } }
  } 

  return True;
}

with foo() { 
    say "done";
}
else
{
  say "handled {.exception.message}"
}
Run Code Online (Sandbox Code Playgroud)

输出:

FAIL
  in block  at d:\tmp\x.pl line 5
  in any  at d:\tmp\x.pl line 5
  in sub foo at d:\tmp\x.pl line 4
  in block <unit> at d:\tmp\x.pl line 11
Run Code Online (Sandbox Code Playgroud)

error-handling perl6 raku

7
推荐指数
1
解决办法
94
查看次数

Problem with Raku and SSL on Windows Machine

I just installed perl6 on windows server and windows 7.

I want to port a script which is already running on openbsd to a windows machine.

I tested this code:

my $resp = await Cro::HTTP::Client.get('https://www.perl6.org/');
Run Code Online (Sandbox Code Playgroud)

And I'll get is this on both Windows machines:

C:\Users\Matthias\CommaProjects\testing>perl6 cro.pl6
Tried to get the result of a broken Promise
  in block  at C:\rakudo\share\perl6\site\sources\0609EA0BB03C70C2C15DB4B144D704
1C1059D14C (Cro::TLS) line 108

Original exception:
    An operation first awaited:
      in block  at C:\rakudo\share\perl6\site\sources\A4ECA701FE96A8456AEB83692D
6B3C55AAFC964C (IO::Socket::Async::SSL) line 322

    Died with the …
Run Code Online (Sandbox Code Playgroud)

openssl ssl-certificate cro raku

7
推荐指数
1
解决办法
194
查看次数

如何动态生成用于特征的值?

对于我正在编写的库,我在HOW上有一个属性,该属性使用handles特征将由另一HOW所完成的各种角色的方法委派给该HOW的实例。我的第一次尝试是这样的(尽管为了使它更易于阅读,这只会处理Metamodel::Naming):

class ParentHOW does Metamodel::Naming {
    method new_type(ParentHOW:_: Str:D :$name!, Str:D :$repr = 'P6opaque' --> Mu) {
        my ::?CLASS:D $meta := self.new;
        my Mu         $type := Metamodel::Primitives.create_type: $meta, $repr;
        $meta.set_name: $type, $name;
        $type
    }
}

class ChildHOW {
    has Mu $!parent;
    has Mu $!parent_meta handles <set_name shortname set_shortname>;

    submethod BUILD(ChildHOW:D: Mu :$parent is raw) {
        $!parent      := $parent;
        $!parent_meta := $parent.HOW;
    }

    method new_type(ChildHOW:_: Mu :$parent is raw) {
        my ::?CLASS:D $meta := self.new: :$parent;
        Metamodel::Primitives.create_type: …
Run Code Online (Sandbox Code Playgroud)

oop traits raku

7
推荐指数
1
解决办法
66
查看次数

在Raku中简洁地打印数学系列

数学级数,例如以此处表示为数组的连续序列:

my @seq = my $a=0, {++$a} ... *;
for @seq[^10].kv {state $f=0; ($^k < 4 or $^k > 7) ?? say "a$^k =  "  ~ $^v !! (say "..." if $f ne 1; $f=1) };
Run Code Online (Sandbox Code Playgroud)

印刷品:

a0 =  0
a1 =  1
a2 =  2
...

a8 =  8
a9 =  9
Run Code Online (Sandbox Code Playgroud)

我的问题:1-是否有一种简单的方法可以只删除第一个元素,即a0 = 0从打印输出中删除?

2-可以使此代码更惯用吗?

谢谢。

sequence raku

7
推荐指数
3
解决办法
117
查看次数

为什么在StackOverflow上不再询问Perl 6问题?

它似乎在2019年10月的某个地方停止了。我认为Perl 6的开发仍在继续。那么,为什么没有更多人问有关Perl 6的问题了?

perl6

7
推荐指数
0
解决办法
252
查看次数

Perl中的单例实现

perl6中单例模式的正确实现是什么?

我试过这个,但我不知道如何在perl6中使用static关键字:

singleton perl6 raku

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

子集块(或一般的Callables)

问题最初由lookatmePerl6 IRC频道发布.最初的目的是通过使用子集或任何其他可能的方式来约束Callable.它适用于签名,但是:

subset WalkCb of Callable where *.signature ~~ :(Int $a); 
my WalkCb $x = sub (Int $a) { return $a; };
Run Code Online (Sandbox Code Playgroud)

回报

«Type check failed in assignment to $x; expected WalkCb but got Sub (sub (Int $a) { #`(Sub...)?  in block <unit> at <tmp> line 1??»
Run Code Online (Sandbox Code Playgroud)

声明的其他变体返回类似的消息.什么是正确的语法?

signature perl6 subtyping

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

Perl是否重命名在APFS上做了一些奇怪的事情?

我正在尝试使用Apple文件系统(APFS)跟踪Perl 在macOS 上重命名的问题.我已经能够使用perls将其复制到至少5.12.3,但我的所有内容都是使用Apple LLVM版本9.1.0(clang-902.0.39.1)编译的.这些相同的perls在FAT或HFS +文件系统中没有这个问题.其他地方我没有注意到这个问题.

  • 第一次运行它.我最终得到了一个Changes和一个Changes.bak.这正是我的预期.

  • 再次运行它.您最终获得了更改更改3文件.没有Changes.bak.这很奇怪.

  • 再次运行它.我最终得到了一个Changes文件,Changes.bakChanges 3.

  • 再次运行它.我最终得到了一个Changes文件,Changes 3Changes 4.再一次,没有Changes.bak.

  • 如果我删除了这print条线,我无法理解这一点("医生,当我这样移动我的手臂时会疼,").

  • 我重新命令文件句柄打开和关闭,但似乎没有解决任何问题.

我认为在文件系统级别发生了一些事情.所以我真的有两个问题:

  • 这是一个错误,在什么级别?rename在我开始弄乱文件句柄之前,是否保证无法完成它需要做的任何事情?

  • 我想读取旧文件并创建一个在中间插入一些数据的新文件.复制标题,插入新行,将所有旧行输出到新文件中.我可以写一个临时文件并稍后再移动,但我还做其他蠢事吗?

如果您可以重现此行为但不知道,请发表评论.也许我的系统还有其他奇怪之处.


my $changes = "Changes";
my $bak     = $changes . ".bak";

rename $changes, $bak or die "Could not backup $changes. $!\n";

open my $in, '<', $bak or die "Could not read old $changes …
Run Code Online (Sandbox Code Playgroud)

macos perl apfs

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

如何知道使用`FALLBACK`时是否返回左值?

我怎么知道使用时我是否真的需要返回l值FALLBACK

我正在使用,return-rw但我只想return在可能的地方使用。我想跟踪我是否实际上已修改过%!attrs或仅在FALLBACK调用时读取了该值。

或者(替代方案B)我可以附加回调或类似的东西%!attrs来监视更改吗?

class Foo {
  has %.attrs;
  submethod BUILD { %!attrs{'bar'} = 'bar' }

#  multi method FALLBACK(Str:D $name, *@rest) {
#    say 'read-only';
#    return %!attrs{$name} if %!attrs«$name»:exists;
#  }

  multi method FALLBACK(Str:D $name, *@rest) {
    say 'read-write';
    return-rw %!attrs{$name} if %!attrs«$name»:exists;
  }
}

my $foo = Foo.new;
say $foo.bar;

$foo.bar = 'baz';
say $foo.bar;
Run Code Online (Sandbox Code Playgroud)

metaprogramming lvalue perl6 raku

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

在Raku中每n行读取文本文件时需要建议

我正在寻找一些有关如何在Raku / perl6中按第n个文件读取文本文件的建议。

在生物信息学研究中,有时我们需要以一种不太直接的方式来解析文本文件。例如Fastq文件,一次以4行为一组存储数据。甚至更多,这些Fastq文件成对出现。因此,如果我们需要解析此类文件,则可能需要执行以下操作:从第一个Fastq文件读取4行,从第二个Fastq文件读取4行,然后从第一个Fastq文件读取接下来的4行,然后读取第二个fastq文件中的下4行,......

关于解决此问题的最佳方法,我是否可以提出一些建议?Raku的“ IO.lines”方法似乎能够一次处理每一行。但不确定如何处理每第n行

一个示例fastq文件对:https : //github.com/wtwt5237/perl6-for-bioinformatics/tree/master/Come%20on%2C%20sister/fastq 我们之前对“ IO.lines”进行的尝试:https:// github.com/wtwt5237/perl6-for-bioinformatics/blob/master/Come%20on%2C%20sister/script/benchmark2.p6

raku

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