Perl-e вставляет новую строку [дубликат]

Возможный дубликат:
вставьте новую строку в жемчуг-e оператор

Привет!

Если я делаю это в ударе

perl -e '$x; $y'

Есть ли какой-либо символ, который может вести себя как новая строка?

т.е. Я хочу сделать

perl -e '$x; some_chars_as_new_line $y'

где some_chars_as_new_line мог бы быть \, не метасимвол.

где интерпретатор жемчуга на самом деле видит фактическую новую строку.

$x; 
$y;

Большое спасибо

0
задан 20.03.2017, 12:17

1 ответ

Вопрос Вы спросили только проблемы, как оболочка интерпретирует свой вход и передает его другим программам. Это не имеет никакого отношения к Perl по сути.

Необходимо просто смочь поместить это в сценарий:

foo '$x;
$y;'

Аргумент, данный команде, будет иметь новую строку в том же месте, как это делает в самом сценарии. Вы, возможно, должны заботиться для сохранения такого сценария таким способом, которым он заканчивает стилем Unix (LF-only) разрывы строки, иначе Вы могли бы получить CR+LF (разрывы строки DOS/Windows) или просто CR (старый стиль Mac lineb сильные запахи). Можно также сделать это при интерактивной подсказке, но Вы будете видеть подсказку продолжения перед вторым и любыми последующими строками:

$ foo '$x;
> $y;'

В ударе можно также использовать $'' заключение в кавычки синтаксиса для кодирования символа новой строки как это:

foo $'$x;\n$y;'

Аргумент, переданный программе, будут рассматривать способом, подобным струне до ANSI. Если Вы хотите фактическую обратную косую черту в строке, необходимо будет выйти из нее как \\, вместо этого.

Так, если Вы действительно хотите литеральную строку, заключающую это в кавычки, одинарные кавычки дают Вам, необходимо, вероятно, придерживаться встроенной новой строки так, чтобы Вы не волновались о дополнительном выходе.

-1
ответ дан 27.11.2019, 20:54

Теги

Похожие вопросы