#!perl6
use v6;
my $list = 'a' .. 'f';
sub my_function( $list ) {
for ^$list.elems -> $e {
$list[$e].say;
}
}
my_function( $list );
Run Code Online (Sandbox Code Playgroud)
首先我用perl5风格尝试过这个,但它不起作用:
for @$list -> $e {
$e.say;
}
# Non-declarative sigil is missing its name at line ..., near "@$list -> "
Run Code Online (Sandbox Code Playgroud)
我怎么能在perl6中这样做?
我想用惯用的Perl 6来做这件事.
我在一个嘈杂的输出文件中找到了一个很棒的连续数据块.
我想简单地打印出标题行,从Cluster Unique
它后面的所有行开始,直到但不包括第一次出现空行.这是文件的样子:
</path/to/projects/projectname/ParameterSweep/1000.1.7.dir> was used as the working directory.
....
Cluster Unique Sequences Reads RPM
1 31 3539 3539
2 25 2797 2797
3 17 1679 1679
4 21 1636 1636
5 14 1568 1568
6 13 1548 1548
7 7 1439 1439
Input file: "../../filename.count.fa"
...
Run Code Online (Sandbox Code Playgroud)
这是我要解析的内容:
Cluster Unique Sequences Reads RPM
1 31 3539 3539
2 25 2797 2797
3 17 1679 1679
4 21 1636 1636
5 14 1568 1568
6 13 …
Run Code Online (Sandbox Code Playgroud) 我是Perl 6的新手.我的Atom编辑器中有以下代码,但我仍然不明白它是如何工作的.我复制了以下代码,正如doc.perl6.org所说,但它似乎无法正常工作.所以我把代码更改为:
use v6;
class HTTPHeader { ... }
class HTTPHeader does Associative {
has %!fields handles <self.AT-KEY self.EXISTS-KEY self.DELETE-KEY self.push
list kv keys values>;
method Str { say self.hash.fmt; }
multi method EXISTS-KEY ($key) { %!fields{normalize-key $key}:exists }
multi method DELETE-KEY ($key) { %!fields{normalize-key $key}:delete }
multi method push (*@_) { %!fields.push: @_ }
sub normalize-key ($key) { $key.subst(/\w+/, *.tc, :g) }
method AT-KEY (::?CLASS:D: $key) is rw {
my $element := %!fields{normalize-key $key};
Proxy.new(
FETCH => …
Run Code Online (Sandbox Code Playgroud) 在Perl 6中,<.before ... >
正则表达式的含义是什么?它似乎意味着<?before ... >
:
my $str = "Hello";
$str ~~ /<alpha> <?before 'o'>/;
say $/;
$str ~~ /<alpha> <.before 'o'>/;
say $/;
Run Code Online (Sandbox Code Playgroud)
输出:
?l?
alpha => ?l?
?l?
alpha => ?l?
Run Code Online (Sandbox Code Playgroud)
我想澄清一下,因为我看到了一些使用的代码,<.before ...>
我不确定它是什么意思.它可能是非法的语法,或者它可能意味着负面的前瞻<!before ...>
或积极的前瞻<?before ...>
或其他.我知道我可以<alpha>
通过在它前面放一个点来制定像非捕获这样的规则<.alpha>
,但是对于我来说,因为它们总是无法捕获而对前瞻没有意义.在任何情况下,它应该写<.?before ... >
或<.!before ... >
区分正面和负面的前瞻?
我正在使用Windows 7和10 rakudo-star-2019.03-x86_64 (JIT)
。我想知道如何在Perl6中创建一个弹出窗口来向用户提供信息?类似于Linux的send-notify或Windows Pro msg(无网络连接)
非常感谢,-T
你会如何用 Raku/Perl6 的 Native Call 调用这个库?
https://developer.gnome.org/gtk3/stable/gtk3-Clipboards.html#gtk-clipboard-request-text
void
gtk_clipboard_request_text (GtkClipboard *clipboard,
GtkClipboardTextReceivedFunc callback,
gpointer user_data);
Run Code Online (Sandbox Code Playgroud)
非常感谢,-T
编辑:这个问题是如何调用函数。不要对失败的呼叫进行故障排除。此时没有编写代码。
编辑:@ikegami 是第一个回应并指出我的错字的人。
\nraku正则表达式文档说:
\n\n\n要匹配任何单词边界,请使用 <|w> 或 <?wb>。这类似于其他语言中的 \\b。
\n
这是我在 rakudo 中看到的:
\n[309] > "apa pz" ~~ / <|wb> p. /\n\xef\xbd\xa2pa\xef\xbd\xa3\n\n[310] > "apa pz" ~~ / <?wb> p. /\n\xef\xbd\xa2pz\xef\xbd\xa3\n
Run Code Online (Sandbox Code Playgroud)\n<?wb>
行为符合我的预期。在<|wb>
做什么?
在 Perl 中:
\n"apa pz" =~ / \\b p. /xms; \nsay $&; # pz\n
Run Code Online (Sandbox Code Playgroud)\n 我试图使用以下语法解析BibTeX作者字段:
use v6;
use Grammar::Tracer;
# Extract BibTeX author parts from string. The parts are separated
# by a comma and optional space around the comma
grammar Author {
token TOP {
<all-text>
}
token all-text {
[<author-part> [[\s* ',' \s*] || [\s* $]]]+
}
token author-part {
[<-[\s,]> || [\s* <!before ','>]]+
}
}
my $str = "Rockhold, Mark L";
my $result = Author.parse( $str );
say $result;
Run Code Online (Sandbox Code Playgroud)
输出:
TOP
| all-text
| | author-part
| | * …
Run Code Online (Sandbox Code Playgroud) 软呢帽 33 乐
我想用 NativeCall 与 lic.so.6 交谈,以我正在编写的示例为例。我已经找到
但我不知道哪一个会给我一天中的时间 (21:02:03)