Возможный дубликат:
вставьте новую строку в жемчуг-e оператор
Привет!
Если я делаю это в ударе
perl -e '$x; $y'
Есть ли какой-либо символ, который может вести себя как новая строка?
т.е. Я хочу сделать
perl -e '$x; some_chars_as_new_line $y'
где some_chars_as_new_line мог бы быть \, не метасимвол.
где интерпретатор жемчуга на самом деле видит фактическую новую строку.
$x;
$y;
Большое спасибо
Вопрос Вы спросили только проблемы, как оболочка интерпретирует свой вход и передает его другим программам. Это не имеет никакого отношения к Perl по сути.
Необходимо просто смочь поместить это в сценарий:
foo '$x;
$y;'
Аргумент, данный команде, будет иметь новую строку в том же месте, как это делает в самом сценарии. Вы, возможно, должны заботиться для сохранения такого сценария таким способом, которым он заканчивает стилем Unix (LF-only) разрывы строки, иначе Вы могли бы получить CR+LF (разрывы строки DOS/Windows) или просто CR (старый стиль Mac lineb сильные запахи). Можно также сделать это при интерактивной подсказке, но Вы будете видеть подсказку продолжения перед вторым и любыми последующими строками:
$ foo '$x;
> $y;'
В ударе можно также использовать $''
заключение в кавычки синтаксиса для кодирования символа новой строки как это:
foo $'$x;\n$y;'
Аргумент, переданный программе, будут рассматривать способом, подобным струне до ANSI. Если Вы хотите фактическую обратную косую черту в строке, необходимо будет выйти из нее как \\
, вместо этого.
Так, если Вы действительно хотите литеральную строку, заключающую это в кавычки, одинарные кавычки дают Вам, необходимо, вероятно, придерживаться встроенной новой строки так, чтобы Вы не волновались о дополнительном выходе.