如何在“raku -n”迭代期间获取当前行号?

Paw*_*bkr 7 raku

在 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,然后它只由需要它的东西支付。

  • 感谢您明确表示没有“$.”等价物。用于救援的状态变量:) (3认同)