在 Perl 中,我可以:
cat file.txt | perl -nE 'say $.'
Run Code Online (Sandbox Code Playgroud)
我找到的最接近的 Raku 解决方案(不使用状态计数器变量)以字节为单位返回位置:
cat file.txt | raku -ne 'say $*IN.tell'
Run Code Online (Sandbox Code Playgroud)
Jon*_*ton 12
为它使用一个状态变量并增加它。最方便的是,有匿名状态变量$,这意味着可以这样做:
echo -e "foo\nbar\nbaz" | perl6 -ne 'say $++ ~ ": $_"'
Run Code Online (Sandbox Code Playgroud)
这使:
0: foo
1: bar
2: baz
Run Code Online (Sandbox Code Playgroud)
使用++$而不是为基地-1的编号。手柄没有什么特别的东西。它完全脱离了状态变量,或者,对于显式迭代,.lines.kv,然后它只由需要它的东西支付。