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

Привет

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

perl -e '$x; $y'

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

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

perl -e '$x; some_chars_as_new_line $y'

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

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

$x; 
$y;

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

1 ответ1

-1

Вопрос, который вы задали, касается только того, как оболочка интерпретирует свой ввод и передает его другим программам. По сути, это не имеет ничего общего с Perl.

Вы должны просто иметь возможность поместить это в скрипт:

foo '$x;
$y;'

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

$ foo '$x;
> $y;'

В bash вы также можете использовать синтаксис цитирования $'' для кодирования символа новой строки, например:

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .