Автор Тема: Помогите найти глюк  (Прочитано 2343 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TT

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти глюк
« : 23 Февраля 2007, 21:57:45 »
Привет всем. Помогите, а то у меня уже крыша едет и ни фига не соображает.
Вот кусок кода:

1 $seek_temp = "

первое
между первое(второе) третье

";
2 @title_words = ("первое", "(второе)", "третье");
3 foreach my $word (@title_words) {
4   $word = quotemeta($word);
5   $seek_temp =~ /$word/;
6   printf("\\n%s EQ %s \\t\\tFIND:%s", $title_words[$#title_words], $word, $&);
7   if ($title_words[$#title_words] eq $word) {
8      $after = substr($\', 0, 50);
9   } else {
10      $seek_temp = $\';
11   }
12   ($before) && ($between .= "->$`");
13   (!$before) && ($before = substr($`, -0, 50));
14 }

Вот что выводит printf:

третье EQ \\п\\е\\р\\в\\о\\е          FIND:первое
третье EQ \\(\\в\\т\\о\\р\\о\\е\\)       FIND:(второе)
\\т\\р\\е\\т\\ь\\е EQ \\т\\р\\е\\т\\ь\\е    FIND:третье

Кто-нить сможет объяснить почему на третьей итерации содержимое массива эскейпится?
Проблема убирается если закомментировать 4-ю строку.
:confused:
Заранее писиб

Оффлайн TT

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти глюк
« Ответ #1 : 24 Февраля 2007, 14:28:14 »
Нашел!!!
Вводим переменную:
4 my $dword = quotemeta($word);
5 $seek_temp =~ /$dword/;
6 printf("\\n%s EQ %s \\t\\tFIND:%s", $title_words[$#title_words], $dword, $&);

7-ю строку оставляем без изменений!!! ($word не заменяем на $dword)
Как я раньше этого не заметил...

Очень странно, что "eq" так себя ведет (..на нее грешу...).
Если кто сможет объяснить, буду признателен.

Оффлайн TT

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти глюк
« Ответ #2 : 26 Февраля 2007, 10:28:22 »
Весь сыр-бор из-за неправильного использования переменной цикла. НЕЛЬЗЯ ничего ей присваивать.  Стыдно... мне. Никогда так не делайте.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28