小编con*_*con的帖子

如何使perl6死于未定义的值?

我试图在Perl6中使用哈希,但是当我把一些假值(故意)放入其中时

say %key<fake_key>;
Run Code Online (Sandbox Code Playgroud)

我明白了

(Any)

但我希望程序能够像Perl5那样在这种情况下死亡,因为这意味着缺少重要的数据.

例如,

#!/usr/bin/env perl

use strict;
use warnings 'FATAL' => 'all';
use autodie ':all';

my %hash;
print "$hash{y}\n";
Run Code Online (Sandbox Code Playgroud)

截至5.26.1生产

Use of uninitialized value $hash{"y"} in concatenation (.) or string at undefined.pl line 8.
Command exited with non-zero status 255
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得相当于use warnings 'FATAL' => 'all'use autodie qw(:all)在Perl6?

perl6

13
推荐指数
4
解决办法
244
查看次数

如何将数组中的每个元素除以某个数字?

我有一个数组:

my @e = <60.922    20.946     8.721     7.292     4.306     2.821     2.765     2.752     2.741     2.725>
Run Code Online (Sandbox Code Playgroud)

我想将数组中的每个元素除以最小值,但是

@e /= @e.min
Run Code Online (Sandbox Code Playgroud)

产生了单个元素,这是不正确的。

我已阅读https://docs.raku.org/type/Array但我不了解 Raku 的基本元素。

如何将数组中的每个项目除以相同的数字?

raku

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

Perl6:函数/子例程的可变参数个数

我希望能够在Perl6中运行具有可变数量参数的函数,但在通过https://docs.perl6.org/language/functions#Arguments阅读后,我看不出它是如何完成的.我看到其他语言的链接很多,并且警告"类似标题的问题经常被低估"但我在文档或StackOverflow中没有看到这一点.

我想做这样的事情:

some-test($v1, $v2)
Run Code Online (Sandbox Code Playgroud)

要么

some-test($v3)
Run Code Online (Sandbox Code Playgroud)

但没有multi为每个使用单独的功能

如何构造一个接受可变数量字符串的Perl6子程序?

perl6

11
推荐指数
3
解决办法
266
查看次数

perl6 text substitution on array

I'm trying to apply a text substitution to an entire array.

However, when I try to alter the array, it shows that it only has 1 element, when it should have 26.

An example below in Perl6 REPL:

> my @a = 'a'..'z'
[a b c d e f g h i j k l m n o p q r s t u v w x y z]
> my @a1 = @a.subst(/<[aeiou]>/, 1, :g)
[1 b c d …
Run Code Online (Sandbox Code Playgroud)

perl6

11
推荐指数
2
解决办法
125
查看次数

如何从解释器执行raku脚本?

我这样打开 raku/rakudo/perl6 :

con@V:~/Scripts/perl6$ perl6
To exit type 'exit' or '^D'
> 
Run Code Online (Sandbox Code Playgroud)

上面的环境是不是就叫做“解释器”呢?我一直在寻找,但找不到它叫什么。

我怎样才能像我一样执行 rakudo 脚本

source('script.R')在 R 中,还是exec(open('script.py').read())在 python3 中?

澄清一下,我希望脚本中的函数和库可以在 REPL 中使用,但这run似乎不行。

我确信这存在于某个地方的文档中,但我找不到它:(

rakudo raku

11
推荐指数
2
解决办法
486
查看次数

如何在Perl6中逐行读取gz文件

我试图在Perl6中逐行读取一个巨大的gz文件.

我正在尝试做这样的事情

my $file = 'huge_file.gz';
for $file.IO.lines -> $line {
    say $line;
}
Run Code Online (Sandbox Code Playgroud)

但是这给出了错误,即我有一个格式错误的UTF-8.我无法看到如何从帮助页面https://docs.perl6.org/language/unicode#UTF8-C8https://docs.perl6.org/language/io阅读gzip资料

我想完成与Perl5相同的事情:http://blog-en.openalfa.com/how-to-read-and-write-compressed-files-in-perl

如何在Perl6中逐行读取gz文件?

谢谢

perl6

9
推荐指数
3
解决办法
226
查看次数

Perl6相当于Perl的'商店'或'使用Storable'

我试图将写得非常慢的哈希写入数据文件,但我不确定Perl6与Perl5相比如何做到这一点.这是一个类似的问题在Perl 6中的文件中存储中间数据,但我不知道如何使用那里写的任何东西,特别是messagepack.

我想看看Perl6相当于

my %hash = ( 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
use Storable;
store \%hash, 'hash.pldata';
Run Code Online (Sandbox Code Playgroud)

然后阅读

my $hashref = retrieve('hash.pldata');
my %hash = %{ $hashref };
Run Code Online (Sandbox Code Playgroud)

这是内置于Perl5,它非常简单,我不需要安装任何模块(我喜欢它!),但我怎么能在Perl6中做到这一点?我在手册中没有看到它.他们似乎在用https://docs.perl6.org/routine/STORE谈论其他事情STORE

perl6 raku

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

在Perl6中声明多个范围的数组

我试图在Perl6中创建一个数组,该数组具有两个与Perl5中相同的范围:

my @cols = (3..9, 11..16);
use Data::Printer:from<Perl5>;
p @cols; exit;
Run Code Online (Sandbox Code Playgroud)

但是,这将创建一个二维数组

[
    [0] [
            [0] 3,
            [1] 4,
            [2] 5,
            [3] 6,
            [4] 7,
            [5] 8,
            [6] 9
        ],
    [1] [
            [0] 11,
            [1] 12,
            [2] 13,
            [3] 14,
            [4] 15,
            [5] 16
        ]
]
Run Code Online (Sandbox Code Playgroud)

应该是一维数组,就像(3..9, 11..16)在Perl5中那样:

[
    [0]  3,
    [1]  4,
    [2]  5,
    [3]  6,
    [4]  7,
    [5]  8,
    [6]  9,
    [7]  11,
    [8]  12,
    [9]  13,
    [10] 14,
    [11] 15,
    [12] 16,
    [13] 17,
    [14] …
Run Code Online (Sandbox Code Playgroud)

perl6 raku

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

Perl6的安装失败,没有注册的操作处理程序

我正在尝试安装Perl6:

perl Configure.pl --backend=jvm --gen-nqp
Run Code Online (Sandbox Code Playgroud)

再传统make&make install

后者 - 其中大部分都会出现此错误:

== Installing modules for JVM
cd modules/zef && sh -c "PATH='/illumina/runs/Scripts/perl6/rakudo-star-2018.10/install/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/illumina/runs/RNASeq/stringtie-1.3.3b.Linux_x86_64:/illumina/runs/RNASeq/subread-1.6.0-Linux-x86_64/bin:/illumina/runs/RNASeq/STAR-master/bin/Linux_x86_64:/illumina/runs/RNASeq/hisat2-2.1.0:/home/703404669/Scripts/vcftools-vcftools-ea875e2/src/cpp:/illumina/runs/RNASeq/FastQC:/home/703404669/.local/bin:/home/703404669/bin' /illumina/runs/Scripts/perl6/rakudo-star-2018.10/install/bin/perl6-j -Ilib bin/zef install ."
===SORRY!===
Error while compiling op nativecallinvoke, no registered operation handler
make: *** [modules-install-j] Error 1
Run Code Online (Sandbox Code Playgroud)

我仍然是Perl6的新手,我不知道如何处理这个错误,它不会出现在搜索引擎上.

如何通过此错误安装perl6?

perl6

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

Raku控制语句使数字字符串解释为数字

我有大量的数组哈希

%qual<discordant> (约13199个值,例如“ 88.23”,“ 99.23”等。

范围是88-100,并且是从文本文件中读取的,

当我打印时%qual<discordant>.min%qual<discordant>.max我可以看到这些值显然是错误的。

我可以通过更改从文本文件读取数据的方式来解决此问题:

%qual{$type}.push: @line[5]

%qual{$type}.push: @line[5].Num

但这不是直观的,这花了我几分钟的时间弄清楚为什么Raku / Perl6最初给出的答案显然是错误的。错过此错误非常容易。在perl5中,默认行为是无论如何都将这些字符串视为数字。

应该有一些控制语句使它成为默认行为,我该怎么做?

raku

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

标签 统计

perl6 ×7

raku ×5

rakudo ×1