Вопросы и ответы

Можно ли обойтись без функций substr, index и rindex? Для чего они вообще нужны, если практически все можно сделать с помощью регулярных выражений?


Во-первых, использование регулярных выражений для выполнения простых видов поиска и замены строк крайне неэффективно. Функции index и rindex работают значительно быстрее. Во-вторых, создание регулярных выражений для выполнения замены текста с фиксированной позиции в строке — это стрельба из пушки по воробьям; намного более элегантное решение — воспользоваться функцией substr. И, наконец, в-третьих, Perl относится к тому разряду языков программирования, где одну и ту же операцию можно выполнить разными средствами. Поэтому используйте то средство, которое вам больше нравится.


Что произойдет, если в качестве начальной позиции в функции substr (или index, или rindex) указать значение, выходящее за границы строки?


Чем мне всегда нравились компьютеры, так это их удивительной терпимостью к разного рода экспериментам. Вместо того чтобы задавать вопрос из серии “Что будет, если…?”, иногда проще самому поэкспериментировать и посмотреть, что получится.


Возвращаясь к поставленному вопросу, стоит отметить, что обращение к несуществующей части строки приведет к появлению сообщения об ошибке use of undefined value (если включен режим выдачи предупреждений, а он у вас должен быть включен всегда!). При этом функция возвращает неопределенное значение. Например, при выполнении кода $a=”Foo”; substr($a,5); функция substr возвращает значение undef.

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

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