Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Почему split не работает без экранирования шаблона |
Автор: Perlfan 20.11.2014, 12:28 | ||
Два одинаковых кода, но первый работает как ожидается, а второй нет. В книге "Программирование на Perl" 3-е издание на 859 странице написано, что можно использовать конструкцию /$variable/o, но в данном случае (пример 2) она не работает. Необходимо добавлять "\". Есть ли какой-то способ заставить конструкцию split /$variable/ работать без этого? Пробовал разные ограничители шаблона, но всё равно с "|" фокус не проходит. Как быть, если неизвестно, что за разделитель использует клиент? Может быть ещё какие-то знаки, кроме "|" тоже будут глючить? Заранее спасибо за советы! |
Автор: arto 20.11.2014, 12:33 |
первый аргумент у spit -- регулярное выражение perldoc -f split perldoc perlre # perl -le '$a = "|"; print join "\n", split /\Q$a\E/o, "abc|def|ghi|jkl|mno"' abc def ghi jkl mno |
Автор: Perlfan 20.11.2014, 13:37 |
arto, спасибо! Что-то я упустил из вида \Q. |
Автор: noize 21.11.2014, 22:12 |
можно ещё воспользоваться оператором qr для подготовки шаблона регулярки. |