如何在反向语句中使用正则表达式

CJ7*_*CJ7 1 perl reverse while-loop

open IN, "in.txt";
open OUT, ">out.txt";

print OUT unless m[^foo] while <IN>;
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码没有编译?

red*_*neb 6

问题是,允许您将if/ unless/ while作为后缀写入一行代码的符号只能在该行中使用一次.因此,您必须将代码中的最后一行替换为:

while (<IN>) {
    print OUT unless m[^foo];
}
Run Code Online (Sandbox Code Playgroud)

这种情况的替代方案是使用or:

m[^foo] or print OUT while <IN>;
Run Code Online (Sandbox Code Playgroud)