Автор Тема: PERL функция index  (Прочитано 2282 раз)

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
PERL функция index
« : 20.05.2009 15:39:34 »
Всем привет!
Если кто знает хорошо PERL
Нужен совет :
index (строка, подстрока, начальная_позиция); должна выдавать индекс первого вхождения подстроки.

#!/usr/bin/perl
$a='Мама мыла раму, а папа мыл паркет.';
print index($a, ","), "\n";

выдаёт

[axe@localhost ~]$ /home/axe/Desktop/exm/exampl/ttt
26


а должно 13 ... и так постоянно, если б она выдавала всегда результат в формате *2 то мелочи но иногда выдаёт нечётные.
может кто-то в курсе особенностей данной функции?

Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени

Оффлайн php-coder

  • Начинающий
  • *
  • Сообщений: 20
Re: PERL функция index
« Ответ #1 : 20.05.2009 15:46:42 »
а должно 13 ...

А не 14 должно? Нумерация с нуля же.

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

#!/usr/bin/perl
use Encode;

$a='Мама мыла раму, а папа мыл паркет.';
$t = decode_utf8($);

print index($t, ","), "\n";

Читайте про работу в перле с Юникодом или ищите в форуме на opennet.ru -- там эта тема часто обсуждается.

Оффлайн Axe79

  • Завсегдатай
  • *
  • Сообщений: 175
Re: PERL функция index
« Ответ #2 : 20.05.2009 16:00:57 »
да точно 14)
пошло.
только .
$t = decode_utf8($a);$а забыл)

я уж и не знал шо делать ... обошёлся тогда substrом

а то действительна нужная функция а не пашет)))
Спасибо!!!
« Последнее редактирование: 20.05.2009 16:20:39 от Axe79 »
Ничто так не стимулирует тягу к труду интеллектуальному, как обилие труда физического!
Gutta cavat lapidem non vi, sed saepe cadendo Капля долбит камень не силой, а частым падени