open IN, "in.txt";
open OUT, ">out.txt";
print OUT unless m[^foo] while <IN>;
Почему этот код не компилируется?Как использовать регулярное выражение в обратном направлении во время выписки
open IN, "in.txt";
open OUT, ">out.txt";
print OUT unless m[^foo] while <IN>;
Почему этот код не компилируется?Как использовать регулярное выражение в обратном направлении во время выписки
Проблема заключается в том, что запись, которая позволяет писать if
/unless
/while
в качестве суффикса к строке кода может быть использован только один раз в этой строке. Таким образом, вы должны заменить последнюю строку в вас код с:
while (<IN>) {
print OUT unless m[^foo];
}
Альтернативой для этого случая использовать or
:
m[^foo] or print OUT while <IN>;
Только некоторые термины, которые могут помочь вам в будущих поисков: то, что вы 're обратный оператор while является модификатором оператора. – ThisSuitIsBlackNot