小编lis*_*tor的帖子

perl6无法初始化状态变量.需要帮助

我想使用单行程序通过使用状态变量来打印文件的中间部分,以指示当前行是否在文件的所需部分内.但是我无法初始化状态变量.初始化是如此简单,我只是找不到问题所在.请帮忙.谢谢.

该文件名为testFile.txt,并包含以下行:

section 0; state 0; not needed
= start section 1 =
state 1; needed
= end section 1 =
section 2; state 2; not needed
Run Code Online (Sandbox Code Playgroud)

我的单行是

cat testFile.txt | perl6 -ne ' state $x = 0; say "$x--> "; if $_ ~~ m/ "start" / { $x=1; }; if $x == 1 { .say; }; if $_ ~~ m/ "end" / { $x = 2; }'
Run Code Online (Sandbox Code Playgroud)

并且输出显示$ x = 0没有进行初始化:

Use of uninitialized value $x of type Any …
Run Code Online (Sandbox Code Playgroud)

variables state perl6 assign

4
推荐指数
1
解决办法
93
查看次数

perl6如何获取没有按x宽度空格缩进的所有行?

我有一个非常非常大的文本文件,我正在使用具有各种大小的缩进的行.那些可接受的行具有12个字符宽度的缩进,这些缩进是由制表符和空格的组合创建的.现在我想得到所有没有12个字符宽度缩进的行,并且这些行具有从制表符和空格字符组合的0到11个字符宽度的缩进.

if $badLine !~~ m/ ^^ [\s ** 12 ||
                      \t \s ** 4 ||
                      \s \t \s ** 3 ] / { say $badLine; }
Run Code Online (Sandbox Code Playgroud)

但问题是,当您使用文字处理器处理文本文件时,按Tab键可以为您提供0到8 space-char-width的任何位置以填补空白.什么是一种聪明的方法来获得所有那些没有12个字符宽度缩进的不可接受的行?

谢谢.

tabs space match width perl6

4
推荐指数
1
解决办法
154
查看次数

perl6在正则表达式中否定其字符的多个单词和排列

什么是最好的表现方式,在正则表达式中,否定多个单词和构成这些单词的字符的排列?

例如:我不想要

"zero dollar"
"roze dollar"
"eroz dollar"
"one dollar"
"noe dollar"
"oen dollar"
Run Code Online (Sandbox Code Playgroud)

但我确实想要

"thousand dollar"
"million dollar"
"trillion dollar"
Run Code Online (Sandbox Code Playgroud)

如果我写

not m/ [one | zero] \s dollar /
Run Code Online (Sandbox Code Playgroud)

它不会匹配字符的排列,而外部的"非"功能会使正则表达式与正则表达式中没有"美元"的"大爆炸"相匹配.

m/ <- [one] | [zero] > \s dollar/ # this is syntax error.
Run Code Online (Sandbox Code Playgroud)

非常感谢你 !

lisprog

regex permutation negation perl6

4
推荐指数
2
解决办法
173
查看次数

解释器中的Perl 6函数参数语法(REPL)

解释器中的参数语法似乎存在一些不一致之处.我正在使用最新的Rakudo.请参阅以下终端输出:

$ perl6
To exit type 'exit' or '^D'
> say: "foo"
foo
> say("foo")
foo
> say "foo"
===SORRY!=== Error while compiling:
Two terms in a row
------> say? "foo"
    expecting any of:
        infix
        infix stopper
        statement end
        statement modifier
        statement modifier loop
> 
$ perl6
To exit type 'exit' or '^D'
> say "foo"
foo
> say("foo")
foo
> say: "foo"
foo
> say "foo"
===SORRY!=== Error while compiling:
Two terms in a row
------> say? "foo"
    expecting …
Run Code Online (Sandbox Code Playgroud)

arguments function perl6

4
推荐指数
1
解决办法
142
查看次数

perl6数组赋值:指针还是副本?

在perl6中,我想将一个数组分配给另一个数组并使得结果数组成为不同的实体,但似乎既没有直接赋值也没有克隆可以做我想要的.有没有办法用一个表达式复制数组而不是编写循环例程?

To exit type 'exit' or '^D'
> my @a=<a b c d e>
[a b c d e]
> my @b = <1 2 3 4 5 6 7>
[1 2 3 4 5 6 7]
> my @c = @a
[a b c d e]
> @c[3]
d
> @c[3]=3;
3
> @c
[a b c 3 e]
> @a
[a b c d e]
> @c === @a
False
> @c == @a
True          # this is …
Run Code Online (Sandbox Code Playgroud)

arrays pointers clone variable-assignment perl6

3
推荐指数
1
解决办法
105
查看次数

Perl6:如何在用户定义的字符类或范围中使用<alpha>?

我试图匹配任何字母字符和","或";" 我试图根据文档https://docs.perl6.org/language/regexes使用"<:L>字母字符" .但是,编译器抱怨.不使用a..zA..Z这样做的正确方法是什么?

say "a,b,c;d,e;xyz" ~~ m/ <[ <alpha> \, \; ]>+ /;
Run Code Online (Sandbox Code Playgroud)

错误信息:

Potential difficulties:
    Repeated character (a) unexpectedly found in character class
    at C:\Users\Guest\Documents/avg.pl:128
    ------> ay "a,b,c;d,e;xyz" ~~ m/ <[ <alpha> \, \<HERE>; ]>+ /;
Run Code Online (Sandbox Code Playgroud)

非常感谢你 !!

regex range match perl6

3
推荐指数
1
解决办法
169
查看次数

perl6语法动作类方法似乎没有继承,命名捕获似乎没有

我正在尝试解析csv文件以执行简单的操作:提取姓氏,ID和生日,并将生日格式从m/d/yyyy更改为yyyymmdd.

(1)我在生日时使用了命名捕获,但似乎没有调用命名的捕获方法来制作我想要的东西.

(2)继承语法动作方法似乎不适用于命名捕获.

我做错了什么?

my $x = "1,,100,S113*L0,35439*01,John,JOE,,,03-10-1984,47 ELL ST #6,SAN FRANCISCO,CA,94112,415-000-0000,,5720,Foo Bar,06-01-2016,06-01-2016,Blue Cross,L,0,0";

# comma separated lines
grammar insurCommon {
    regex aField  { <-[,]>*? }
    regex theRest { .* }
}    

grammar insurFile is insurCommon {
    regex TOP { <aField> \,\,  # item number
        <aField> \,            # line of business
        <aField> \,            # group number
        <ptID=aField> \,       # insurance ID, 
        <ptLastName=aField> \, # last name, 
        <aField> \,\,\,        # first name
        <ptDOB=aField> \,      # birthday
        <theRest> }
}

# change …
Run Code Online (Sandbox Code Playgroud)

inheritance grammar capture named perl6

3
推荐指数
1
解决办法
122
查看次数

perl6否定用户定义的caracter类

我试图忽略所有带引号的行,不知何故它是一种onfusing:

> my $y='\"\""';
\"\""
> so $y ~~ m/<-[\"]>/
True                      # $y has a " mark, so I want it to be False
> $y ~~ m/<-[\"]>/
?\?
>  $y ~~ m:g/<-[\"]>/
(?\? ?\?)
> $y ~~ m:g/<-["]>/
(?\? ?\?)
$y ~~ m/<-[\\]>/
?"?
> $y ~~ m/<-[\\\"]>/
False
Run Code Online (Sandbox Code Playgroud)

< - [\"]>与< - ["]>相同吗?

> say '"in quotes"' ~~ / '"' <-[ " ]> * '"'/;
?"in quotes"?
> say 'no "foo" quotes' ~~ /  <-[ " ]> + …
Run Code Online (Sandbox Code Playgroud)

class negation perl6

3
推荐指数
1
解决办法
73
查看次数

perl6任何类似于Racket Scheme的字符串端口用于读取数据?

在Racket Scheme中,有一个称为"字符串端口"的数据结构,您可以从中读取数据.perl6中有类似的东西吗?例如,我想实现这些结果:

my $a = "(1,2,3,4,5)"; # if you read from $a, you get a list that you can use;
my $aList=readStringPort($a);
say $aList.WHAT; # (List)
say $aList.elems; # 5 elements

my $b = "[1,2,3]"; # you get an array to use if you read from it;

my $c = "sub ($one) {say $one;}";
$c("Big Bang"); # says Big Bang
Run Code Online (Sandbox Code Playgroud)

EVAL功能并不能完成所有任务:

> EVAL "1,2,3"
(1 2 3)
> my $a = EVAL "1,2,3"
(1 2 3)
> $a.WHAT
(List)
> …
Run Code Online (Sandbox Code Playgroud)

string eval perl6

3
推荐指数
1
解决办法
104
查看次数

perl6 @ $ aList和$ aList之间的性能差异

我的数据结构非常大,需要分配和传递.我还需要进入清单.有时当列表位于标量容器中时,$aList.elems会说1因为列表中只有一个元素.要进入列表,(@$aList).elems将在列表中提供正确数量的元素.

我的问题是:有没有性能劣势使用@$aList频繁,如果有性能问题,将分配@b = @$aList和使用@b,而不是解决问题?也就是说,从列表切换到数组上下文会有加速吗?

谢谢.

arrays performance list perl6

3
推荐指数
1
解决办法
95
查看次数