Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.128.203.143] |
|
Сообщ.
#1
,
|
|
|
$threadpost =~ s~\[img width=(\d+) height=(\d+)\](.+?)\[/img\]~$3~eisg; Как я понял, здесь всё выражение заменяется на имя картинки. А что означают суффиксы e и s (в eisg) ? |
Сообщ.
#2
,
|
|
|
Здесь должно быть: http://perlbook.nm.ru/perl_3.html
|
Сообщ.
#3
,
|
|
|
Даже если бы это можно было назвать суффиксами, то это постфиксы.
А на самом деле - это опции оператора замены. s - обработка строки как однострочной ($ - конец всей строки) e - исполнение выражения замены http://www.hotelshop.ru/download/perldoc.chm |
Сообщ.
#4
,
|
|
|
Регулярные выражения.
Модификаторы команд m/.../ и s/.../.../ В Perl имеется несколько модификаторов, используемых, с командами m/.../ и s/.../.../. i - игнорирует различие между заглавными и строчными буквами. s - метасимволу <точка> разрешено соответствовать символам \n. m - разрешает метасимволам ^ и $ привязываться к промежуточным символам \n, имеющимся в тексте. Не влияет на работу метасимволов \А, \Z и \z. х - игнорирует <пробельные символы> в шаблоне (имеются в виду <истинные> пробелы, а не метасимволы \s и пробелы, созданные через escape-последовательности). Разрешает использовать внутри шаблона комментарии. g - выполняет глобальный поиск и глобальную замену. c - после того как в скалярном контексте при поиске с модификатором g не удалось найти очередное совпадение, НЕ позволяет сбрасывать текущую позицию поиска. Работает только для команды m/.../ и только вместе с модификатором g. o - запрещает повторную компиляцию шаблона при каждом обращении к данному оператору поиска или замены. Пользователь, однако, должен гарантировать, что шаблон не меняется между вызовами данного фрагмента кода. е - показывает, что правый аргумент команды s/.../.../ - это фрагмент выполняемого кода. В качестве текста для подстановки будет использовано возвращаемое значение - возможно, после процесса интерполяции; ee - показывает, что правый аргумент команды s/.../.../ - это строковое выражение, которое надо вычислить и выполнить как фрагмент кода (через функцию eval). В качестве текста для подстановки используется возвращаемое значение - возможно, после процесса интерполяции. (Некоторые модификаторы - например, i, s, m, x - могут находиться в дополнительных конструкциях.) В качестве примера рассмотрим сценарий, в котором пользователь выполняет команду выхода, вводя слово <stop>, <STOP> или даже <StOp>, то есть без учета регистра: while (<>) { if (m/^stop$/i)-{exit;} } |
Сообщ.
#5
,
|
|
|
Цитата vot, 29.08.03, 13:22:27 s - метасимволу <точка> разрешено соответствовать символам \n. Не совсем так. Точнее совсем не так. s - метасимволу "конец строки" соответствует мнимый символ после последнего символа во всей строке. $str="abcdefg<br>abcdefg<br>abcdefg<br>";<br><br>$str=~s/\s$//gos;<br>print "{$str}"; Вывод: {abcdefg<br>abcdefg<br>abcdefg} m - метасимолу "конец строки" соотвествует текущее определение конца строки ($\). $str="abcdefg<br>abcdefg<br>abcdefg<br>";<br><br>$str=~s/\s$//gom;<br>print "{$str}" Вывод: {abcdefgabcdefgabcdefg} Иначе. Опция "s": {##############<br>####################<br>#################<br>##################} Опция "m": {##############<br>}{####################<br>}{#################<br>}{##################<br>} |