2016-09-15 3 views
1
open IN, "in.txt"; 
open OUT, ">out.txt"; 

print OUT unless m[^foo] while <IN>; 

Почему этот код не компилируется?Как использовать регулярное выражение в обратном направлении во время выписки

+0

Только некоторые термины, которые могут помочь вам в будущих поисков: то, что вы 're обратный оператор while является модификатором оператора. – ThisSuitIsBlackNot

ответ

6

Проблема заключается в том, что запись, которая позволяет писать if/unless/while в качестве суффикса к строке кода может быть использован только один раз в этой строке. Таким образом, вы должны заменить последнюю строку в вас код с:

while (<IN>) { 
    print OUT unless m[^foo]; 
} 

Альтернативой для этого случая использовать or:

m[^foo] or print OUT while <IN>; 
+0

Могут ли скобки использоваться, чтобы разрешить более одного обратного оператора в одной строке? – CJ7

+0

@ CJ7 Нет, к сожалению, нет способа сделать это с фигурными скобками или скобками других, которые первый отрывок, который я дал выше. – redneb

Смежные вопросы