gpt4 book ai didi

perl - 使用 “before-the loop”时如何指定 “perl -ne”代码?

转载 作者:行者123 更新时间:2023-12-02 05:45:40 25 4
gpt4 key购买 nike

如何在使用“perl -ne”时指定“before-the循环”代码,而不求助于BEGIN / END块或用实际拼写的while循环替换“-n”?

详细解释:

说,我有以下Perl代码:

use MyModule;
SETUP_CODE;
while (<>) {
LOOP_CODE;
}
FINAL_CODE;

如何使用 perl -ne将其替换为单线?

当然,循环部分是由 -n本身处理的,而 FINAL_CODE可以通过在末尾添加“ } { FINAL_CODE”的技巧来完成。而 use语句可以通过“ -M”参数进行处理。

因此,如果循环前没有 SETUP_CODE,则可以编写以下代码:
perl -MMyModule -ne 'LOOP_CODE } { FINAL_CODE'

但是,我们如何在此处插入 SETUP_CODE

我唯一的想法是尝试通过 BEGIN{}块ala在循环后添加它
perl -MMyModule -ne 'LOOP_CODE } BEGIN { SETUP_CODE } { FINAL_CODE'

但这似乎充其量不过是hacky。

还有其他解决方案吗?

只是要清楚一点-我已经知道我可以通过拼写 while循环而不是使用“-n”或通过使用BEGIN / END块来做到这一点(并且甚至可以同意从某些角度来看,执行“while”是可能更好)。

我感兴趣的是是否存在 不同的解决方案。

最佳答案

将多余的代码隐藏到-M选项中

perl -M'Module;SETUP CODE' -ne 'LOOP CODE'
$ perl -MO=Deparse -M'MyModule;$SETUP=1' -ne '$LOOP=1}{$FINAL=1'
use MyModule;
$SETUP = 1;
LINE: while (defined($_ = <ARGV>)) {
$LOOP = 1;
}
{
$FINAL = 1;
}
-e syntax OK

关于perl - 使用 “before-the loop”时如何指定 “perl -ne”代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com