Транслитерация, а не подстановка

Прежде чем рассмотреть оператор транслитерации (который иногда называют оператором перекодировки), давайте немного вспомним, как работает оператор, подстановки, о котором шла речь на 6-м занятии, “Поиск по шаблону”. Оператор подстановки имеет вид в/шаблон/замена/ и, если не задан оператор привязки =”, выполняет поиск по шаблону и замену строки, находящейся в служебной переменной $_. Оператор транслитерации чем-то напоминает оператор подстановки, однако работает он немного иначе, поскольку в нем не используются регулярные выражения. Синтаксис этого операторы выглядит так:



Оператор транслитерации tr/// выполняет поиск в строке элементов, указанных в первом списке, и заменяет их на соответствующие элементы из второго списка. По умолчанию поиск и замена выполняются в строке, находящейся в переменной $_. Чтобы изменить это правило, необходимо воспользоваться оператором привязки =”, как в случае использования регулярных выражений, например:



Для логической группировки символов используется дефис. Например, конструкция A-Z представляет список прописных букв от А до Z включительно. Логическая группировка позволяет избежать перечисления символов в списке, например:



Если в операторе транслитерации второй список идентичен первому или вовсе отсутствует, то оператор tr/// выполняет только подсчет найденных символов и возвращает данное значение. При этом исходная строка не изменяется, например:



И в заключение отметим, что у оператора tr/// есть синоним — оператор у///. Исторически так сложилось, что префиксы tr и у обозначают одну и ту же операцию. В операторе tr/// (а значит, и в у///) можно заменить символ разделитель списков. Обычно программисты выбирают пару круглых или квадратных скобок или любой другой подходящий символ, например:



У оператора tr/// есть ряд дополнительных функциональных возможностей, которые используются сравнительно редко. Чтобы ознакомиться с ними, обратитесь к разделу prelop справочного руководства.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: