Что означает $ dir = ~ s / \ n //?Мне нужна помощь в объяснении этого простым способом, чтобы понять - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь понять Perl-код, и мне нужно детальное понимание того, что означает эта строка.

$dir =~ s/\n//

Ответы [ 2 ]

7 голосов
/ 09 апреля 2019

=~ - оператор привязки; он сообщает определенным операциям (сопоставление, подстановка, транслитерация), каков их операнд. Таким образом, $dir =~ s выполняет подстановку для переменной $dir.

s/.../.../ - операция замещения; левая часть представляет собой регулярное выражение для сопоставления, а правая часть представляет собой интерполированную строку, используемую для замены сопоставляемого. В вашем случае вы сопоставляете один символ новой строки и заменяете его ничем.

Таким образом, ваш код в основном удаляет первую новую строку из $dir, или, если нет новой строки, ничего не делает.

0 голосов
/ 09 апреля 2019
$dir =~ s/\n//

LHS (левая сторона) - это переменная, содержащая значение, которое станет пространством шаблона

= ~

является оператором связывания регулярного выражения, функционирует как тест на равенство и присваивание, немного различается в зависимости от команды регулярного выражения RHS (правая сторона), которая в данном случае является s (заменить)

RHS - это регулярное выражение команды / выражения

pattern space - любое пространство для строки, к которой будет применено регулярное выражение в контексте.

Если, например;

$ реж

переменная содержит data, на которой шаблон:

/ \ п /

будет применено (фактический шаблон - \n, пара '///' или '//' является только заполнителем, который должен распознаваться компилятором языка). Если это правда (T), то есть соответствует / найдено, тогда будет выполнена подстановка, здесь подстановка отсутствует, значит, она просто очистит, а затем присвоит результат LHS, в противном случае оставит LHS без изменений. этот шаблон обычно применяется к многострочным строкам, которые по своей сути содержат токен новой строки \ n в качестве разделителя строк, который может быть обнаружен и контролироваться механизмом регулярных выражений, но является выводом невидимой сущности, за исключением следующего символа в строке ниже. Предполагая $ dir в нескольких строках, поэтому $ dir, т.е. пространство шаблона data \ n и в конечном итоге $ dir становится data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...