Я пытаюсь разобрать некоторые исходные файлы и застрял в этой проблеме. Я ищу, чтобы соответствовать определенной строке, которая имеет «» и «>>>» в ней, и я пытаюсь удалить все символы новой строки, начиная с того момента, когда она найдет указанные символы до тех пор, пока не встретит первый «;» символ. Любая помощь будет высоко ценится.Perl удалять символы новой строки из совпадающей строки
Это то, что я пытаюсь сделать:
Вход:
... lines of code
func1 <<< abc, xyz >>> (str1,
str2,
str3);
... lines of code
Выход:
... lines of code
func1 <<< abc, xyz >>> (str1, str2, str3);
... lines of code
Переменные func1, азбука, хуг, str1, str2, str3 может все варьироваться.
Заранее благодарен.
EDIT:
Это то, что я пытался и до сих пор он печатает только по той же схеме, что и вход.
while (<$fh>) {
if (/\<\<\<.*\>\>\>/) {
while ($_ !~ /\)\s*\;/) {
chomp $_;
$_ = <$fh>;
}
print $_;
}
}
EDIT 2:
Проблема была решена. Посмотри ответы.
Если строка содержит '<<< ... > >>', то 'chomp', и сростить следующая строка. Прополощите, повторите, пока не найдете ';' в конце строки. Готово. – TLP
@TLP: Я тоже попытался объединиться. Но все равно это не сработает. –
Вы не являетесь конкатенацией в этом коде. – TLP