限制perl中的for循环



我有一点perl,它通过管道接收数据并运行

... | perl -0 -wnE 'say for /d+/g'

它打印从管道之前传递的每个数值。我该如何更改此语法,以便只打印找到的最后十个?

... | perl -M5.010 -ne'say for /d+/g' | tail -10
... | perl -nle'print for /d+/g' | tail -10

仅限Perl:

... | perl -M5.010 -ne'push @n, /d+/g; splice(@n, 0, -10); END { say for @n }'
... | perl -nle'push @n, /d+/g; splice(@n, 0, -10); END { print for @n }'

注:

  • -E不向前兼容,这意味着升级Perl可能会破坏程序。它只能在一次性代码中使用。已替换为-M5.010 -e
  • -0试图诋毁输入文件。这不是它的作用。应使用-0777。但是没有理由在这里诋毁输入文件

您可以通过tailunix命令进行管道传输,只显示最后10个数字:

... | perl -0 -wnE 'say for /d+/g' | tail -10

最新更新